php搜索multidimensial数组

时间:2017-11-20 10:18:03

标签: php multidimensional-array

这是我的阵列:

[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已经存在,我必须在数组" extra"中搜索。 如果sku已经存在,它应该返回" id"。

我现在有这个功能,但它不允许我在数组中搜索"额外"。

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

    return false;
}

我无法以任何方式实现这一目标,我希望有人可以帮助我。

3 个答案:

答案 0 :(得分:0)

就这样做

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

数组$ id包含extra存在的ID。

答案 1 :(得分: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

答案 2 :(得分:0)

我如何理解你的问题是你想要返回id,如果有一个sku(在额外的数组中),否则返回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;
}