从多维数组中获取特定的值



我有一个大的多维数组。我必须从中找到特定的子数组。
我尝试使用一个递归函数,但它实际上不返回值。谁能给我另一个解决办法?这是array的预览。

Array
(
    [0] => Array
        (
            [expanded] => 1
            [key] => _1
            [title] => New
        )
    [1] => Array
        (
            [key] => _2
            [title] => Home
        )
    [2] => Array
        (
            [expanded] => 1
            [key] => _3
            [title] => Care
            [children] => Array
                (
                    [0] => Array
                        (
                            [expanded] => 1
                            [key] => _4
                            [title] => face
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [key] => _5
                                            [title] => new
                                        )
                                    [1] => Array
                                        (
                                            [key] => _6
                                            [title] => <strong>face timeline</strong>
                                            [data] => Array
                                                (
                                                    [url] => http://localhost/patient/face-timeline/
                                                    [type] => content
                                                    [cid] => 2291
                                                    [timeline] => 0
                                                )
                                            [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [key] => _2278
                                                            [title] => Post Op Visit
                                                        )
                                                    [1] => Array
                                                        (
                                                            [key] => _2277
                                                            [title] => Surgery
                                                        )
                                                    [2] => Array
                                                        (
                                                            [key] => _2276
                                                            [title] => Pre-Op
                                                        )
                                                    [3] => Array
                                                        (
                                                            [key] => _2275
                                                            [title] => Consultation
                                                        )
                                                    [4] => Array
                                                        (
                                                            [key] => _2274
                                                            [title] => Reseach
                                                        )
                                                )
                                        )
                                )
                        )
                )
        )
)

从这个数组我想要这个数组(下面):

Array
(
    [key] => _6
    [title] => <strong>face timeline</strong>
    [data] => Array
        (
            [url] => http://localhost/patient/face-timeline/
            [type] => content
            [cid] => 2291
            [timeline] => 0
        )
    [children] => Array
        (
            [0] => Array
                (
                    [key] => _2278
                    [title] => Post Op Visit
                )
            [1] => Array
                (
                    [key] => _2277
                    [title] => Surgery
                )
            [2] => Array
                (
                    [key] => _2276
                    [title] => Pre-Op
                )
            [3] => Array
                (
                    [key] => _2275
                    [title] => Consultation
                )
            [4] => Array
                (
                    [key] => _2274
                    [title] => Reseach
                )
        )
)  

这是我尝试过的

function recursion($array,$postid) {
    foreach ($array as $key=>$value) {
       if((isset($value['data']['cid'])) && ($value['data']['cid'] == $postid)){
            $tmp = $value;
                return $value;
        }
        if (is_array($value))
        {
            recursion($value,$postid); 
        } 
    }
}  

这个函数没有返回值。
这里$postid2291。这是我正在搜索,我能够打印该数组,但不能返回值这里是链接

如果您只想获得一个特定的值,请使用:

   function recursive($your_array)
    {
        $newArray = [];
        foreach ($your_array as $key => $val) {
            if (array_keys($your_array) == 'children') {
                foreach($val as $key2 => $val3){
                    $newArray[] = recursive($val3);
                }
            }
        }
        print_r($newArray);
    }

这将给出您的结果:

$searchedData = searchCustomRecursive('2291',$userdb);
function searchCustomRecursive($searchString, $array, $previousArray= Array()){
    if(is_Array($array)){
        $newArray = recursive_array_search($searchString,$array);
        if(is_Array($newArray)){
            searchCustomRecursive($searchString, $newArray,$array);
        }else{ 
            print_r($previousArray); // Check your result here...
            return $previousArray;
      }
    }
}
function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $value;
        }
    }
    return false;
}

相关内容

  • 没有找到相关文章

最新更新