protected function whereRecursive($array, $key, $value = null, $preventKeys = false)
    {
        $outputArray = [];

        $iterator = new RecursiveIteratorIterator(
            new RecursiveContainerIterator($array),
            RecursiveIteratorIterator::SELF_FIRST
        );

        foreach ($iterator as $sub)
        {
            $subIterator = $iterator->getSubIterator();

            if (isset($subIterator[$key]) && (( ! is_null($value) && $subIterator[$key] == $value ) || is_null($value)))
            {
                $outputArray += $this->iteratorToArray($iterator, $subIterator, $outputArray, $preventKeys);
            }
        }

        return $outputArray;
    }
protected function whereRecursive($array, $key, $value = null, $preventKeys = false)
    {
        $outputArray = [];

        $iterator = new RecursiveIteratorIterator(
            new RecursiveContainerIterator($array),
            RecursiveIteratorIterator::SELF_FIRST
        );

        foreach ($iterator as $sub)
        {
            $subIterator = $iterator->getSubIterator();

            if (isset($subIterator[$key]) && (( ! is_null($value) && $subIterator[$key] == $value ) || is_null($value)))
            {
                $outputArray += $this->iteratorToArray($iterator, $subIterator, $outputArray, $preventKeys);
            }
        }

        return $outputArray;
    }
protected function whereRecursive ( $ array , $ key , $ value = null , $ preventKeys = false ) { $ outputArray = [ ] ; $ iterator = new RecursiveIteratorIterator ( new RecursiveContainerIterator ( $ array ) , RecursiveIteratorIterator :: SELF_FIRST ) ; foreach ( $ iterator as $ sub ) { $ subIterator = $ iterator -> getSubIterator ( ) ; if ( isset ( $ subIterator [ $ key ] ) && ( ( ! is_null ( $ value ) && $ subIterator [ $ key ] == $ value ) || is_null ( $ value ) ) ) { $ outputArray += $ this -> iteratorToArray ( $ iterator , $ subIterator , $ outputArray , $ preventKeys ) ; } } return $ outputArray ; }
Recursively traversing tree.

@param $array
@param $key
@param $value
@param $preventKeys
@return array
Recursively traversing tree .