Arrays utilities
Learn how to create a new Inphinit project.
Checks if an array is a list
Starting from PHP 8.1 to determine if an array is a list you can use the array_is_list
function, for older versions of PHP you can use the Inphinit\Utility\Arrays::indexed
method, the variable is passed by reference, example:
use Inphinit\Utility\Arrays;
$list = [0 => 'foo', 1 => 'bar'];
$assoc = [0 => 'a', 1 => 'bar', 'foo' => 'bar'];
var_dump(Arrays::indexed($list)); // Returns true
var_dump(Arrays::indexed($assoc)); // Returns false
Checks if an array is associative
Starting from PHP 8.1 to determine if an array is a list you can use the if (array_is_list($array) === false)
, for older versions of PHP you can use the Inphinit\Utility\Arrays::associative
method, the variable is passed by reference, example:
$list = [0 => 'foo', 1 => 'bar'];
$assoc = [0 => 'a', 1 => 'bar', 'foo' => 'bar'];
var_dump(Arrays::associative($list)); // Returns false
var_dump(Arrays::associative($assoc)); // Returns true
Sort recursive arrays by keys
Recursively sort an array by key in ascending order:
use Inphinit\Utility\Arrays;
$multidimentional = [
'Foo' => 1,
'bar' => 2,
'Baz' => 3,
'moo' => [
10 => 100,
20 => 200,
30 => 300,
5 => 50,
1 => [
'saitama' => 'one punch',
'netero' => 'human evolution',
'allmight' => 'symbol of Peace',
'meruem' => 'this is why I was born'
]
]
];
Arrays::ksort($multidimentional); // same SORT_REGULAR
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_NUMERIC);
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_STRING);
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_LOCALE_STRING);
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_NATURAL);
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_FLAG_CASE);
print_r($multidimentional);
To sort in descending order you can set the third parameter to true
, example:
use Inphinit\Utility\Arrays;
Arrays::ksort($multidimentional, SORT_REGULAR, true);
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_NUMERIC, true);
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_STRING, true);
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_LOCALE_STRING, true);
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_NATURAL, true);
print_r($multidimentional);
Arrays::ksort($multidimentional, SORT_FLAG_CASE, true);
print_r($multidimentional);
For flags details see: https://www.php.net/manual/en/function.ksort.php