2014-04-01 1 views
0

하나의 다중 dimentional 배열을 가지고, 문제는 특정 키의 배열 값 싶습니다. 나는 이미 나에게 유용하지 않은 배열의 current()와 end()를 시도했다. 그래서 루프를 사용하지 않고 특정 키의 배열 값을 찾으려면 적절한 솔루션을 제안하십시오. 내 데모 배열은어떻게 루프없이 PHP에서 특정 키 배열을 얻을

Array 
(
    [0] => Array 
     (
      [EntityType] => Array 
       (
        [Id] => 1 
        [Code] => SUP/13-14/10001 
        [Name] => Supplier 
        [DisplayName] => Supplier 
        [ModuleIdentifier] => 1 
        [IsAdd] => 
        [IsEdit] => 1 
        [IsDelete] => 1 
       ) 

     ) 

    [1] => Array 
     (
      [EntityType] => Array 
       (
        [Id] => 2 
        [Code] => Emp/13-14-10002 
        [Name] => Employee 
        [DisplayName] => Employee 
        [ModuleIdentifier] => 1 
        [IsAdd] => 
        [IsEdit] => 
        [IsDelete] => 
       ) 

     ) 

    [2] => Array 
     (
      [EntityType] => Array 
       (
        [Id] => 3 
        [Code] => CUS/13-14/10003 
        [Name] => Customer 
        [DisplayName] => Customer 
        [ModuleIdentifier] => 1 
        [IsAdd] => 1 
        [IsEdit] => 
        [IsDelete] => 
       ) 

     ) 

) 

고객 이름의 배열이 필요합니다. 이렇게 배열을 얻는 방법 ... 감사합니다!

+0

'특정 키'가 무엇입니까? 그것이 파생 된 곳에서? –

+0

나는 이것에 대한 답변을 간단하고 정확한 것으로 보았습니다. 하지만 루프를 사용하지 않습니까? 그런 다음 ** name **이 ** Customer **와 같은지 확인하기 위해 유한 요소로 배열을 트래버스하는 방법은 무엇입니까? – YouSer

답변

1

당신은 array_map과 함께 array_filter을 사용할 수 있습니다 :

function findElem($array, $val) { 
    $result = array_map(
     function ($v) { return $v['EntityType']; }, 
     array_filter($array, function ($v) use($val) { return $v['EntityType']['Name'] == $val; }) 
    ); 
    return count($result)? $result[0] : false; 
} 

print_r(findElem($array, 'Customer')); 
0

당신이 당신의 배열의 n 번째 요소에 액세스하려면 단지로 시도 : 그래서 n는 정수 값입니다

$array[n] 

:

$array[2] 
0

당신은 같은 배열의 데이터에 액세스 할 수 있습니다 이 : $array[0]["EntityType"]["ID"]. 이 경우

0

이 라인은 당신이 당신의 소스 배열 가정의 열쇠 "이름"의 모든 값이 이름 얻을 것이다 $arr은 당신이 원하는 무엇 :

$names = array_map(function($item) { return $item["EntityType"]["Name"]; } , $arr); 
관련 문제