php - deep search array of arrays and return only matching elements

后端 未结 5 960
忘掉有多难
忘掉有多难 2020-12-18 16:31

I am looking for a solution in php as mentioned in the accepted answer of this question:

javascript - return parent with only child that matches given s

5条回答
  •  粉色の甜心
    2020-12-18 16:42

    Try this code.

    function getParentStackComplete( $search, $stack ){
    
        $results = array();
    
        foreach( $stack as $item ){
    
            if( is_array( $item ) ){
    
                if( array_filter($item, function($var) use ($search) { return ( !is_array( $var ) )? stristr( $var, $search ): false; } ) ){
                    //echo 'test';
                    $results[] = $item;
                    continue;
                }else if( array_key_exists('asset_info', $item) ){
                    $find_assets = array();
                    foreach( $item['asset_info'] as $k=>$v ){
                        //echo 'abc ';
    
                        if( is_array( $v ) && array_filter($v, function($var) use ($search) { return stristr($var, $search); }) ){
                            $find_assets[] = $v;
                        }
                    }
                    if( count( $find_assets ) ){
                        $temp = $item;
                        $temp['asset_info'] = $find_assets;
                        $results[] = $temp;
                    }
                }
            }
        }
    
        return $results;
    }
    

提交回复
热议问题