Andrew Fletcher published: 18 May 2022 1 minute read
To sort through a multidimensional array seems to be a function that I occasionally call on. Handy to have referenced here:
/**
* Loop through a multi dimensional array
*
* @param array $haystack
* Data array.
*/
protected function sortMultiDimensionalArray($haystack)
{
foreach ($haystack as $key => $item) {
// If $item is an array and the number of children is greater to one
// keep looping through the array.
if (is_array($item) && count($haystack[$key]) > 1) {
$this->sortMultiDimensionalArray($haystack[$key]);
}
// If count is equal to one then load it in to the get_value array.
elseif (is_array($item) && count($haystack[$key]) == 1) {
$k = key($item);
if (is_array($item[$k])) {
$k2 = key($item[$k]);
$this->get_value[] = $item[$k][$k2];
}
else {
$this->get_value[] = $item[$k];
}
}
// Not an array.
elseif (!is_array($item)) {
$this->get_value[] = $item;
}
}
}