如何在数组中搜索以查找包含特定值的所有子数组

时间:2017-10-17 22:41:31

标签: php arrays foreach

我有一个放在变量$class中的数组,它由每个包含2个学生ID的子数组构成, 我试图找到包含某个id的所有子数组,例如11 我想将包含此id的所有数组保存在变量中。

数组示例

Array
(
    [0] => Array
        (
            [s1] => 6
            [s2] => 37
        )

    [1] => Array
        (
            [s1] => 8
            [s2] => 11
        )

    [2] => Array
        (
            [s1] => 11
            [s2] => 48
        )

)

foreach ($class as $key => $value) {
    if(!in_array($id, $class)){
        unset($class[$key]);
    }
}

2 个答案:

答案 0 :(得分:2)

你很亲密。如果使用in_array()循环并引用正确的变量,它将按您希望的那样工作。然后将匹配的数组分配给一个新的数组var以便稍后使用(这样你就不会改变你的原始数组了!):

$id = 11;
$matched = array();
foreach ($class as $i => $students) {
    if ( in_array($id, $students) ) {
        $matched[] = $class[$i];
    }
}

print_r($matched);

会导致:

Array (
     [0] => Array
         (
             [s1] => 8
             [s2] => 11
         )
     [1] => Array
         (
             [s1] => 11
             [s2] => 48
         )
     )

答案 1 :(得分:-1)

关联数组 http://php.net/manual/es/function.array-search.php

$class = array(array("s1"=>6, "s2"=>37),array("s1"=>8,"s2"=>11),array("s1"=>11, "s2"=>48));
$id = 11;
foreach ($class as $key => $value) {
    if(!array_search($id, $value)){
        unset($class[$key]);
    }
}

抱歉,您可以按照这个答案 using array_search for multi dimensional array