2017-11-20 16 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"を返す必要があります。

私は今この機能を持っていますが、「余分な」配列を検索することはできません。

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を返すようにしたいということです理解方法スキューがある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; 
}