在数组/ PHP中查找父键

时间:2010-03-23 11:40:38

标签: php arrays key parent

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

我正在使用基本搜索功能在数组深处查找数组。问题是,一旦找到该数组,我还想返回它的父键。 是否有可以确定数组父键的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] => 
        )

)

现在,理想情况下我还想知道这个数组的父键,在示例中是'产品',我显然需要在返回结果之前检索... < / p>

2 个答案:

答案 0 :(得分:1)

不,没有内置功能。您可以在函数参数

中传递父键

答案 1 :(得分:0)

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

你也可以稍微修改你的foreach到像

这样的东西
foreach ($array as $subarray_key => $subarray){
  $results = array_merge($results, search($subarray, $key, $value));
}

和$ subarray_key就是关键。