mathiasgrimm/arraypath
Convenient array manipulation for PHP, especially multidimensional arrays. Safely get, set, check existence, add or remove values using simple “a/b/c” paths, avoiding undefined index notices. Optional class alias (A) for cleaner calls and IDE autocomplete.
ArrayPath is an easy and very convenient way for manipulating arrays, especially multidimensional. Forget about checking for existing indexes and/or getting an E_NOTICE.
With ArrayPath you can easily Check, Add, Remove and Retrieve elements from any array
Our examples will be using a class alias which will be explained next
The default class alias is A but you can also define your custom alias.
By using the default alias you get the benefits of the ide auto-completion
<?php
// recommended
ArrayPath::registerClassAlias();
A::get($aData, 'a/b/c');
// or
ArrayPath::registerClassAlias('MyAlias');
MyAlias::get($aData, 'a/b/c');
A good place to register the class alias is in any bootstrap file like a Service Provider or initialisation script
<?php
$post = array(
'user' => array(
'basicInformation' => array(
'name' => 'Mathias',
'surname' => 'Grimm'
),
)
);
// normal php way
$sName = isset($post['user']['basicInformation']['name' ]) ? $post['user']['basicInformation']['name' ] : null;
$sSurname = isset($post['user']['basicInformation']['surname']) ? $post['user']['basicInformation']['surname'] : null;
// default value
$sLocale = isset($post['user']['locale']) ? $post['user']['locale'] : 'Europe/Dublin';
// ===================================================================
// ArrayPath
$sName = A::get($post, 'user/basicInformation/name');
$sSurname = A::get($post, 'user/basicInformation/surname');
// with default value
$sLocale = A::get($post, 'user/locale', 'Europe/Dublin');
<?php
// normal php way
$aUser = array();
$sName = $aUser['user']['basicInformation']['name'] = 'Mathias Grimm';
// ===================================================================
// ArrayPath
$aUser = array();
$sName = A::set($aUser, 'user/basicInformation/name', 'Mathias');
The exists checks for the existence of the index as in array_key_exists and returns true if the key exists regardless the value. An isset will return false in case of a null value.
<?php
// normal php way
$bExists = false;
if (array_key_exists('user', (array) $aUser)) {
if (array_key_exists('basicInformation', (array) $aUser['user'])) {
if (array_key_exists('name', (array) $aUser['user']['basicInformation'])) {
$bExists = true;
}
}
}
// ===================================================================
// ArrayPath
$bExists = A::exists($aUser, 'user/basicInformation/name');
<?php
// normal php way
if (isset($aUser['user']['basicInformation']['name'])) {
$sName = $aUser['user']['basicInformation']['name'];
unset($aUser['user']['basicInformation']['name']);
}
// ArrayPath
$sName = A::remove($aUser, 'user/basicInformation/name');
<?php
ArrayPath::setSeparator('.');
$sName = A::get($aUser, 'user.basicInformation.name');
ArrayPath::setSeparator('-');
$sName = A::get($aUser, 'user-basicInformation-name');
ArrayPath::setSeparator('->');
$sName = A::get($aUser, 'user->basicInformation->name');
ArrayPath::setSeparator('|');
$sName = A::get($aUser, 'user|basicInformation|name');
The parameters will always be in this sequence, when available:
$arrayData, $index, $value, $default
How can I help you explore Laravel packages today?