배열에서 특정 키를 찾아서 그 값과 경로 인 을 반환하여 해당 키를 찾을 수 있습니다.. 예 :다차원 배열에서 키를 검색하고 경로를 반환하는 중
$array = array(
'fs1' => array(
'id1' => 0,
'foo' => 1,
'fs2' => array(
'id2' => 1,
'foo2' => 2,
'fs3' => array(
'id3' => null,
),
'fs4' => array(
'id4' => 4,
'bar' => 1,
),
),
),
);
search($array, 'fs3'); // Returns ('fs1.fs2.fs3', array('id3' => null))
search($array, 'fs2'); // Returns ('fs1.fs2', array('id2' => 1, ...))
나는 사용하여 데이터를 정확한 키를 찾을 수있는 배열을 재귀 적으로 반환 할 수있었습니다 RecursiveArrayIterator
(아래 그림 참조),하지만 난 어떤 경로를 추적 할 수있는 가장 좋은 방법을 모르는 나는 현재 켜져있다.
$i = new RecursiveIteratorIterator
new RecursiveArrayIterator($array),
RecursiveIteratorIterator::SELF_FIRST);
foreach ($i as $key => value) {
if ($key === $search) {
return $value;
}
}
키는 항상 고유합니까? 모든 종류의 키가 하나의 차원에 들어갈 때 배열을 다차원으로 만드는 목적은 패배입니다. 첫 번째 인스턴스 또는 모든 배열을 반환하고 싶습니까? –
@JonathanKuhn 키가 반드시 고유하지는 않지만 첫 번째 결과를 반환하는 것이 좋습니다. 검색 배열의 구조를 상속 했으므로 검색 배열을 변경하는 것은 옵션이 아닙니다. – nachito
재귀 함수와 단순한 foreach 루프를 사용하여 진행 상황을 추적 할 수있는 것처럼 보입니다. –