在PHP中搜索值并在嵌套关联数组中返回其路径

时间:2014-11-26 14:43:47

标签: php arrays recursion

我试图在PHP中的嵌套关​​联数组中搜索一个值,就像array_search一样,但是嵌套了。我需要所有导致该特定值的键。

我没有看到任何关于这个特定功能的SO求助,所以现在我问。其他示例似乎返回数组中的所有值,而不仅仅是单个键/值对的路径。

1 个答案:

答案 0 :(得分:2)

function array_search_path($needle, array $haystack, array $path = []) {
    foreach ($haystack as $key => $value) {
        $currentPath = array_merge($path, [$key]);
        if (is_array($value) && $result = array_search_path($needle, $value, $currentPath)) {
            return $result;
        } else if ($value === $needle) {
            return $currentPath;
        }
    }
    return false;
}

$arr = [
    'foo' => 'bar',
    'baz' => [
        'test' => 42,
        'here' => [
            'is' => [
                'the' => 'path'
            ]
        ],
        'wrong' => 'turn'
    ]
];

print_r(array_search_path('path', $arr));

// Array
// (
//    [0] => baz
//    [1] => here
//    [2] => is
//    [3] => the
// )