2016-08-06 4 views
1

다차원 배열의 하위 값의 상위 키를 검색 : 나는 $array[$ID][0]를 호출하면PHP는 예를 들어, 내가 다차원 배열을

$array[ 'ex1' ] = array('link', '915', '716'); 
$array[ 'am2' ] = array('image', '37', '685'); 
$array[ 'ple' ] = array('video', '354', '675'); 

나는 link를 얻을 좋은! 내가 link를 검색 할 경우

나는이 경우 ex1

이 내 현재 솔루션에 부모 키를 얻을 필요가 :

foreach($array as $key => $value) { 
if(in_array('link', $value)) { $ID = $key; } 
} 

배열을 설정하거나 검색 할 수있는 더 좋은 방법이됩니다 부모 키?

편집 :

나는 이런 식으로 배열 형식을 변경하는 경우

:

$array[] = array('ex1', 'link', '915', '716'); 
$array[] = array('am2', 'image', '37', '685'); 
$array[] = array('ple', 'video', '354', '675'); 

나는 array_search('link', array_column($array, 1, 0)) 으로 $ ID를 얻을 더 쉽게 생각하지만 내가 읽을 수 없습니다! 예 : echo($array[$ID][0]) // should output link

어느 것이 더 좋은 해결책입니까?

답변

2

foreach($array as $k => $v) { 
    $ind = array_search("link",$array[$k]) 
    if ($ind) { $ID = $k; break; } 
} 

같은 array_search를 사용할 수 있으며,이 루프에서 때 당신은 $array[$ID][$ind]와 "링크"를 검색 할 수 있습니다.

여기 방법의 차이는 단지 true 또는 falsein_array처럼하지 않지만, 당신은 또한 검색 블록 내부 array_search와 "링크"의 인덱스를 얻을 수 있다는 것입니다.

이것은 존재하지 않는 키를 검색 할 때 물론 문제를 해결하지 못합니다. 예를 사용하면

$array[] = array('ex1', 'link', '915', '716'); 
$array[] = array('am2', 'image', '37', '685'); 
$array[] = array('ple', 'video', '354', '675'); 

이 방법을 사용하여 '알파'를 검색하면 오류가 발생합니다. 이것은 건초 더미 $array 당신이 원하는 방식으로 $needle의 값을 검색 할

$ID = false 
foreach($array as $k => $v) { 
    $ind = array_search($needle,$array[$k]) 
    if ($ind) { $ID = $k; break; } 
} 
if ($ID) { 
    $element = $array[$ID][$ind] 
} else { 
    // The item searched for does NOT exist 
} 

처럼 안전한 솔루션이 될 것이라고 나는 생각한다.

관련 문제