PHP foreach 遍历数组时候如何使用 list()

在 PHP 中,遍历一组非关联的多维数组,大部分代码是这样的:

$items = array(
    array('var1', 'var2', 'var3'),
    array('var1', 'var2', 'var3'),
    array('var1', 'var2', 'var3'),
    array('var1', 'var2', 'var3'),
    array('var1', 'var2', 'var3'),
);

foreach ($items as $item){
    list($var1, $var2, $var3) = $item;

    if ($var1 == $var2){
        echo $var3;
    }
}

甚至在 foreach 里面没有用 list

foreach ($items as $item){
    $var1 = $item[0];
    $var2 = $item[1];
    $var3 = $item[3];

    if ($var1 == $var2){
        echo $var3;
    }
}

其实现在可以在 foreach 内部利用 list 的赋值功能:

foreach ($items as list($var1, $var2, $var3)){
    if ($var1 == $var2){
        echo $var3;
    }
}

在 PHP 7.1 之后,也支持关联数组了:

$data = [
    ["id" => 1, "name" => 'Tom'],
    ["id" => 2, "name" => 'Fred'],
];

// list() style
foreach ($data as list("id" => $id, "name" => $name)) {
    // logic here with $id and $name
}

// [] style
foreach ($data as ["id" => $id, "name" => $name]) {
    // logic here with $id and $name
}

这样写的代码就简洁优雅多了! 🙂


©我爱水煮鱼,本站推荐使用的主机:阿里云,国外主机建议使用BlueHost

本站长期承接 WordPress 优化建站业务,请联系微信:「chenduopapa」。