2016-11-04 3 views
3

Google에서 많이 검색하지만 답변을 찾지 못했습니다 (또는 이해하지 못함).array_search 다중 값을 갖는 다차원 배열

여기 내 문제가 있습니다 : 조건에 두 값이있는 다차원 배열의 키를 검색하려고합니다. 여기

$key = array_search($journee, array_column($data,'journee')); 

내 배열 :

나는 하나 개의 조건으로 mutlidim 배열에서 검색하는 방법을 알고

Array 
(
    [0] => Array 
     (
      [pseudo] => titi 
      [journee] => 11 
      [pts] => 3 
     ) 

    ... 
    [10] => Array 
     (
      [pseudo] => test 
      [journee] => 10 
      [pts] => 6 
     ) 

    [11] => Array 
     (
      [pseudo] => test 
      [journee] => 11 
      [pts] => 4 
     ) 

) 

나는 colunm journee에 대한 array_search에 11을 넣어 juste 경우 것

검색 조건에 pseudo을 추가하고 싶습니다.

간단한 기능으로 가능합니까?
또는 array_keys()를 사용해야합니까? (그것은 multidim 배열을 사용할 수 있습니까?)

감사합니다 사전에 어떤 도움을,

안부를.

+0

하나의 시뮬레이션 ple 기능이 불가능합니다. 조합으로 - 그렇습니다. –

+0

그래서 json과 일치하는 조건 인'journee'와'pseudo'를 사용하여 json에서 검색하고 싶습니까? –

답변

3

하나의 간단한 기능으로는 불가능합니다. 여기

있는 솔루션입니다 :

$search = ['pseudo' => 'test', 'journee' => 10]; 
$keys = array_keys(
    array_filter(
     $array, 
     function ($v) use ($search) { return $v['pseudo'] == $search['pseudo'] && $v['journee'] == $search['journee']; } 
    ) 
); 
$key = $keys[0]; 

하지만 키를 찾을 필요가 있다면 당신은 모든 배열을 반복 할 필요가 없기 때문에 단지 나는 foreach & break를 사용하는 조언 값 (array_filter을 사용하면 어떻게됩니까?)을 확인하고 특정 데이터가 발견되면 즉시 중지하십시오.

$key = false; 
$search = ['pseudo' => 'test', 'journee' => 10]; 
foreach ($array as $k => $v) { 
    if ($v['pseudo'] == $search['pseudo'] && $v['journee'] == $search['journee']) { 
     $key = $k; 
     // key found - break the loop 
     break; 
    } 
} 
+0

첫 경기 이후에 휴식을 취할 필요가 없더라도 간단한 루프가 더 좋습니다. 그래서 간단한 루프를 사용하면 답이 줄어 듭니다.) –

+0

간단한 루프가 더 좋은 이유를 설명하십시오. –

+0

1) 루프가 더 읽기 쉽습니다. 2) 루프는 단일 구조입니다. 이전 솔루션은 모두 람다 및 두 개의 함수 호출을 사용하지만 모두 복잡한 표현식에 결합되었습니다. 따라서 루프가보다 생산적이어야합니다. –