2017-11-20 4 views
0

이 내 배열 :PHP 검색 multidimensial 배열

[60] => Array 
    (
     [id] => 122 
     [leverancier_id] => 120 
     [naam] => 1PK-HP-ELP-KKH-**** 

     [extra] => array 
      (
       [sku] => 1PK-HP-ELP-KKH-145 
      ) 
    ) 

[61] => Array 
    (
     [id] => 123 
     [leverancier_id] => 98 
     [naam] => 2PK-HP-ELP-KKH-**** 

     [extra] => Array 
      (
       [sku] => 2PK-HP-ELP-KKH-145 
      ) 
    ) 

그리고 나는 SKU이 이미 존재하는 경우, 배열 "추가"에서 검색해야합니다. sku가 이미 존재하면 "id"가 반환됩니다.

나는이 기능을 지금 가지고 있지만 "extra"배열을 검색 할 수는 없다.

function hasName($array, $name) { 
    foreach ($array as $item) { 
     if($item["naam"] == $name) return $item['id']; 
    } 

    return false; 
} 

나는 어떤 식 으로든 이것을 가능하게 만들 수 없으며 누군가 나를 도울 수 있기를 바랍니다.

답변

0

그냥이

foreach($array as $row){ 
    if(isset($row['extra'])) $id[] = $row['id']; 
} 

배열 $ ID가 extra가 존재하는 ID를 포함 할.

0

코드 :

<?php 
$sku = '2PK-HP-ELP-KKH-145'; 
$arr = Array(
    0=>Array 
    (
     'id' => 122, 
     'leverancier_id' => 120, 
     'weergavenaam' => '1PK-HP-ELP-KKH-****', 
     'extra' => array 
      (
       'sku' => '1PK-HP-ELP-KKH-145' 
      ) 
    ), 
    1=>Array 
    (
     'id' => 123, 
     'leverancier_id' => 98, 
     'weergavenaam' => '2PK-HP-ELP-KKH-****', 
     'extra' => array 
      (
       'sku' => '2PK-HP-ELP-KKH-145' 
      ) 
    )); 

    foreach($arr as $row) 
    { 
     if($row['extra']['sku'] == $sku) 
     { 
      echo "Id = ".$row['id']; 
     } 
    } 

출력 :

Id = 123 

라이브 데모 : 나는 당신의 질문을 이해하는 방법 Click Here

0

당신이 경우 ID를 반환 할 것입니다 거기에 sku (전자 xtra 배열), 그렇지 않으면 false를 반환합니다. 올바른 방향으로 안내해 드리겠습니다.

function hasName($array) 
{ 
    foreach ($array as $item) { 
     // if (!empty($item['extra']['sku']) may also work. 
     // is_array($item['extra'] may be a little too much in the following line. 
     if (array_key_exists('extra', $item) && is_array($item['extra']) && array_key_exists('sku', $item['extra'])) { 
      return $item['id']; 
     } 
    } 

    return false; 
}