在数组中查找父级的键/PHP

问题描述 投票:0回答:2

也许有人可以帮我解决这个问题:

我正在使用基本搜索函数来查找数组深处的数组。问题是,一旦找到该数组,我还想返回它的父键。 有没有可以确定数组父键的 PHP 函数?

下面是搜索函数的示例...理想情况下,我想返回找到的数组及其父键。

    function search($array, $key, $value){
    $results = array();

    if (is_array($array)){
        if ($array[$key] == $value){
            $results[] = $array;
        }
        foreach ($array as $subarray){
            $results = array_merge($results, search($subarray, $key, $value));
        }   
    }

    return $results;
}

这里有一个例子可以更好地说明我的意思: 这是我要搜索的数组的示例:

    Array
(
    [categories] => Array
        (
            [1] => Array
                (
                    [data] => 
                    [id] => d
                    [name] => Bracelets
                    [products] => Array
                        (
                            [0] => Array
                                (
                                    [id] => j
                                    [name] => Red
                                    [data] => 
                                )

                            [1] => Array
                                (
                                    [id] => gi
                                    [name] => Torqoise
                                    [data] => 
                                )

                        )

                )

如果我搜索“id”为“j”的内容,我会得到这个数组作为结果:

Array
(
    [0] => Array
        (
            [id] => j
            [name] => Red
            [data] => 
        )

)

现在,理想情况下我还想知道这个数组的父键,在示例中是“Products”,显然我需要在返回结果之前检索它......

php arrays recursion multidimensional-array parent
2个回答
1
投票

不,没有内置功能。您可以在函数参数中传递父键


0
投票

您可以使用 array_flip() 交换键和值,以便可以检索键和值。

您还可以将 foreach 稍微修改为类似

foreach ($array as $subarray_key => $subarray){
  $results = array_merge($results, search($subarray, $key, $value));
}

并且 $subarray_key 将是键。

© www.soinside.com 2019 - 2024. All rights reserved.