2012-10-30 4 views
0

필자는 특정 값을 검색하고 형제 값을 검색해야하는 커다란 다차원 배열을 가지고 있습니다.다차원 배열에서 같은 레벨의 값을 검색하려면 어떻게해야합니까?

값이 29 인 경우이 값이 id의 키인지 확인해야합니다. 이것이 발견되면 label 키의 값이 필요합니다. 이 두 키는 동일한 중첩 배열에 속합니다.

예 :

이 예에서
[26]=> 
array(54) { 
    ["id"]=> 
    string(2) "29" 
    ["label"]=> 
    string(13) "Special Notes" 

, 나는 29를 검색 id에 속하는, 조금 나올까요,이 외에도 Special Notes

이다 label의 값을 반환 더 복잡합니다 ..

검색 할 값에 decimal이 포함되어있는 경우이 값은 id에도 속하지만 여러 위치에서 언급됩니다. 그것이 속한 grandparent 키는 inputs이어야하며, 확인되면 label (id의 형제) 값을 검색하십시오.

예 : 나는 12.1을 검색하는 경우

이 예에서
["inputs"]=> 
    array(3) { 
    [0]=> 
    array(2) { 
     ["id"]=> 
     string(4) "12.1" 
     ["label"]=> 
     string(4) "Name" 
    } 
    [1]=> 
    array(2) { 
     ["id"]=> 
     string(4) "12.2" 
     ["label"]=> 
     string(5) "Price" 
    } 
    [2]=> 
    array(2) { 
     ["id"]=> 
     string(4) "12.3" 
     ["label"]=> 
     string(8) "Quantity" 
    } 
    } 

, 그것은 반환 Name - 모든이 사전에 inputs

감사에 속한다는 것을 보장하는 것은

+0

이 질문에 대한 문제는 너무 특정 점이다 유일한 대답이 그 누군가는 실제로 당신을 위해 모든 것을 해결하는 것입니다. 이것은 복잡한 프로그래밍 방식의 문제이며 프로그래밍은 문제를 해결하는 것이므로 다른 사람에게주지 마십시오! 그러나 힌트를 사용하여 크고 복잡한 배열을 탐색하는 대신 객체 지향 프로그래밍을 사용합니다. 예를 들어, 부모 요소와 자식 요소 사이의 링크를 유지할 수 있도록 복합 패턴을 사용하십시오. –

답변

0

당신은 필터링 할 수 있습니다 배열 대신

$inputs = array(
     0 => array("id" => "12.1","label" => "Name"), 
     1 => array("id" => "12.2","label" => "Price"), 
     2 => array("id" => "12.3","label" => "Quantity")); 


$s = "12.1" ; // what you want 
$input = array_filter($inputs,function($v)use($s){ return $v['id'] == $s;}); 
var_dump($input); 

출력

array 
    0 => 
    array 
     'id' => string '12.1' (length=4) 
     'label' => string 'Name' (length=4) 
1

여기에 간단한 예가 나와 있습니다. 나는 당신의 점 잘못지고 있지 않다 경우 어쩌면 이것은 당신을 도울 것보다 ...

$search_val = "12.1"; // value to search for 
foreach($inputs as $key=>$value){ 
    foreach($value as $keyassoc=>$val){ 
     if($keyassoc=="id"){ 
      if($val==$search_val){ 
       echo "found: ".$inputs[$key]["label"]; 
      } 
     } 
    } 
} 
0

도움이 될 것입니다 : -

function searchLabel($inputs,$search) 
    foreach($inputs as $input){ 
     if($input['id']==$search){ 
     return $input['label']; 
     } 
    } 
    $label = searchLabel($inputs,12.1); 
관련 문제