【问题标题】:Find key of parent in array / PHP在数组/ PHP中查找父项的键
【发布时间】:2010-03-23 11:40:37
【问题描述】:

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

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


    【解决方案1】:

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

    【讨论】:

    • @Jordan 怎么样?只需使用 foreach 的扩展语法,你就会拥有它
    【解决方案2】:

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

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

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

    $subarray_key 是关键。

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      相关资源
      最近更新 更多