Here’s a code snippet to flatten or merge a 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 code that is clear and easy to read. Hope this helps you if you are finding a solution to this.