2017-01-07 5 views
1

키 값 쌍이있는 간단한 배열의 경우 array_search()을 사용하여 값을 기반으로 키를 쉽게 찾을 수 있습니다. 하지만 값이 문자열이나 배열이 될 수있는 배열이 있고 값이 특정 키가있는 배열 인 키를 찾아야합니다. 즉, 내가 설정을 검색하고 3를 반환해야합니다 -php를 사용하여 특정 키를 사용하여 값이 배열 인 키를 찾는 방법은 무엇입니까?

$myArray = array(
    0 => string_value, 
    1 => string_value2, 
    3 => array(
     'config' => array(
      'option1' => value1, 
      'option2' => value2, 
     ), 
     ), 
    4 => string_value3, 
); 

나는 아이 배열은 키 config있는 요소에 대한 키를 찾아야합니다.

배열을 순환하지 않는 것이 좋습니다. 이것이 유일한 옵션이라면 큰 문제는 아닙니다. 하지만 그 열쇠를 찾는 더 우아한 방법이 있는지 궁금하네요.

+0

모든 항목을 확인하는 것 외에 다른 방법은 없습니다. –

+0

그리고 당신은 무엇을 시도 했습니까? – RiggsFolly

+0

이미 (모든 요소를 ​​반복하는 등)이 작업을 수행하는 방법이 있고 더 좋은 방법이 있는지 궁금하다면 [코드 검토] (http://codereview.stackexchange.com/)에서 작업 솔루션을 게시하는 것이 좋습니다.) 대신. –

답변

1

사용 array_filter의 코드

$index; 
foreach ($myArray as $key => $item){ 
    if (isset($item["config"])) 
     $index = $key; 
} 
echo $index; 

보기 결과의 구성과 배열을 필터링한다.

$o = array_filter($array, function($v){return !empty($v['config']) ? true : false;}); 
var_dump(array_keys($o)); 
+1

이것은 확실히 가장 우아한 해결책이었습니다. – lcdservices

0

배열의 항목을 반복하고 루프의 모든 항목의 값을 확인해야합니다. 루프에 $item["config"]이 설정되어 있는지 확인하고 루프 항목의 인덱스를 반환합니다. demo

+0

그리고'break '를 추가하십시오 @ –

+0

@MagnusEriksson'$ item ['config ']'allway가 배열이면, 당신은'is_array()'를 사용할 수 있습니다. – Mohammad

+1

정확합니다. 나는 그 질문을 잘못 읽었다. 그는'$ item'을 반드시 $ item [ 'config']'가 아닌 배열로 원합니다. –