按 ID 查找和循环数组中的项目


find and loop items in array by id

>我有一个包含多个索引的数组,例如

$arr = array(
   1 => array('id' => 0,
              'container' => 1
        ),
   2 => array('id' => 1,
              'container' => 1
        ),
   3 => array('id' => 2,
              'container' => 2
        ),
   4 => array('id' => 3,
              'container' => 1
        )
);

如何查找并遍历容器为 1 的所有项目,然后循环容器为 2 的所有项目,依此类推。

除了使用错误的数组赋值: .只需将其更改为 => .

然后只需使用 foreach 循环:

$containers = array(1, 2);
foreach($containers as $container) {
    foreach ($arr as $value) {
        if($container == $value['container']) {
            echo "Container: $container : ";
            echo $value['id'] . '<br/>';
        }
    }
}

有很多方法可以做到这一点。这个按给定键重新构造/分组数组 - 如果您无论如何都遍历所有元素,这是可行的。

<?php
$arr = array(
   1 => array('id' => 0,
              'container' => 1
        ),
   2 => array('id' => 1,
              'container' => 1
        ),
   3 => array('id' => 2,
              'container' => 2
        ),
   4 => array('id' => 3,
              'container' => 1
        )
);
$byContainer = groupBy($arr, 'container');
foreach($byContainer as $container=>$items) {
    echo $container, "'r'n";
    foreach($items as $e) {
        echo '  ', $e['id'], "'r'n";    
    }
}
function groupBy($arr, $key) {
    $result = array();
    foreach($arr as $e) {
        if ( !isset($result[ $e[$key] ]) ) {
            $result[ $e[$key] ] = array($e);
        }
        else {
            $result[ $e[$key] ][] = $e;
        }
    }
    return $result;
}
<?php
$arr = array(1 => array('id'=> 0, 'container'=> 1),
2 => array('id'=> 1, 'container'=> 1),
   3 => array('id'=> 2, 'container'=> 2),
   4 => array('id'=> 3, 'container'=> 1));
$temp = array();
foreach ($arr as $elem) {
 foreach ($elem as $k => $v) {
   if ($k == 'container') {
     $temp[$k][$v][] = $v;
   }
 }
}
print_r($temp);
?>

工作示例