如何从多维数组中获取值,按名称搜索?

时间:2017-08-06 14:35:13

标签: php arrays search multidimensional-array

我想检查item2的每个子数组作为第一个元素(索引0)中的值。 如果是这样,我想返回第二个元素的值(索引1)。

这是我的多维数组:

$arr = Array
(
    1 => Array
        (
            0 => 'item',
            1 => 3,
            2 => 20,
        ),

    2 => Array
        (
            0 => 'item2',
            1 => 1,
            2 => 21,
        ),

    7 => Array
        (
            0 => 'item3',
            1 => 4,
            2 => 26,
        ),

    20 => Array
        (
            0 => 'item4',
            1 => 1,
            2 => 39,
        ),

    22 => Array
        (
            0 => 'item1',
            1 => 10,
            2 => 39,
        ),
     23 => Array
        (
            0 => 'item2',
            1 => 11,
            2 => 39,
        )
);

预期结果为:[1,11]

我使用了这个功能,但它并没有返回所有结果:

function in_array_r($needle, $haystack, $strict = false) {

    foreach ($haystack as $item) {
        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
            return true;
        }
    }

    return false;
}

1 个答案:

答案 0 :(得分:2)

当然,使用不能有多个具有相同键的数组元素(item2 => 1,item2 => 11),但您可以收集所有值[1](1,11)

例如

$arr = // your array()
$res = array();
foreach ($arr as $row) {
    if (isset($row[0]) && $row[0] == 'item2') {
        $res[] = $row[1];
    }
}

var_dump($res);