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

后端 未结 5 964
忘掉有多难
忘掉有多难 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:45

     array
            (
                array
                (
                    'booking_name' => 'abc/xyz/123',
                    'pdg' => 'assure',                    
                    'user_area' => 'es st1',
                    'release' => 'oss72',
                    'start_date' => '2017-06-20 00:00:00',
                    'end_date' => '2017-06-23 00:00:00',
                    'asset_info' => array
                        (
                            array
                                (
                                    'status' => 10,
                                    'manufacturer' => 'Oracle',
                                    'model' => 'HP BL460C GEN8',
                                    'hardware_color' => '#0066b3',
                                ),
                            array
                                (
                                    'status' => 11,
                                    'manufacturer' => 'HP',
                                    'model' => 'HP BL460C GEN81',
                                    'hardware_color' => '#0066b3',
                                )
    
                        ),
    
                    'full_name' => 'Valay Desai',
                    'email_address' => 'valay@xyz.com',
                ),
    
                array
                (
                    'booking_name' => 'abc/xyz/123',
                    'pdg' => 'enm',                    
                    'user_area' => 'es st',
                    'release' => 'oss72',
                    'start_date' => '2017-06-20 00:00:00',
                    'end_date' => '2017-06-23 00:00:00',
                    'asset_info' => array
                        (
                            array
                                (
                                    'status' => 10,
                                    'manufacturer' => 'HP',
                                    'model' => 'HP BL460C GEN8',
                                    'hardware_color' => '#0066b3',
                                )
    
                        ),
    
                    'full_name' => 'Valay Desai',
                    'email_address' => 'valay@xyz.com',
                )
            )
        );
    
    function getParentStackComplete($child, $stack) {
        $return = array();
        $k=0;   
        foreach ($stack as $k => $v) { 
    
            if (is_array($v)) {          
    
    
                if (is_array($stack) && !empty($stack) && $k==0) {
                    unset($v['asset_info'][1]);
                    $return = $v;              
    
                }
            } else {
    
                if(strpos($v, $child) !== false){    
    
                    $return[] = $v;
                }
            }
            $k++;
        }    
        return empty($return) ? false: $return;
    }
    
    
    echo "
    ";
    print_r(getParentStackComplete('Oracle', $items['tableData']));
    echo "
    ";

提交回复
热议问题