2014-11-26 3 views
2

array_search와 비슷하지만 중첩 된 PHP의 중첩 연관 배열에서 값을 검색하려고합니다. 그 특별한 가치를 이끌어내는 모든 열쇠가 필요합니다.값을 찾고 PHP의 중첩 연관 배열에서 경로를 반환하는 중

그래서이 특정 기능에 대한 도움을 요청하는 내용이 표시되지 않았으므로 지금 문의하고 있습니다. 다른 예는 단일 키/값 쌍에 대한 경로뿐만 아니라 배열의 모든 값을 반환하는 것처럼 보입니다.

+0

"반환 값으로 처음 발견 된 값"중 하나를 선택하고 "반환"비즈니스를 제거하십시오. 어레이의 마지막을 칠 때까지 계속 검색하십시오. –

+0

그리고 배열 구조는? –

답변

1
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 
//) 
+0

이것은 내가 필요한 것입니다. 감사! –

관련 문제