Here's a code snippet to flatten or merge multidimensional array. This is useful when we need to find if a value exists in any of the nodes in a multidimensional array.
I use this function in my Paid Content Packages WordPress Plugin to find out if any of the packages have any page or post assigned.
PHP Function:
function flattenArray($arrayToFlatten) { $flatArray = array(); foreach($arrayToFlatten as $element) { if (is_array($element)) { $flatArray = array_merge($flatArray, flattenArray($element)); } else { $flatArray[] = $element; } } return $flatArray; }
Example:
$array = array( 'parent-one' => 'parent-one', 'parent-two' => 'parent-two', 'parent-three' => array( 'child-one' => 'child-one', 'child-two' => 'child-two', 'child-three' => array( 'kid-one' => 'kid-one', 'kid-two' => 'kid-two', ), ), ); print_r(flattenArray($array));
This code will print the following output.
Array ( [0] => parent-one [1] => parent-two [2] => child-one [3] => child-two [4] => kid-one [5] => kid-two )
There are shorter versions of this function available, however, I like to use the code which is clear and easy to read. Hope this helps you if you are finding a solution to this.
Comments on PHP - Flatten or Merge a Multidimensional Array