PHP - 在 list() 中创建循环

PHP - Making loop inside list()

有没有办法在 list() 中创建一个变量循环 我试过这段代码,但它不起作用。

$long_string = "one , two , three , four";
$list = explode(" , ",$long_string);
$count_list = count($list);

list(for($i = 0; $i <= $count_list; $i++){ return ${"list$i"}; }) = explode(" , ",$long_string);

更新:得到解决方案,谢谢

您可能需要一段时间来生成变量:

php < 7.2 :

<?php
$long_string = "one , two , three , four";
$list = explode(" , ",$long_string);
while (list($key, $val) = each($list)) {
    ${"list".$key} = $val;
}
print_r($list0); //returns one
print_r($list1); //returns two

PHP > 7.2: 替代方式

    <?php
     $long_string = "one , two , three , four";
     $list = explode(" , ",$long_string);
     foreach($list as $key => $val) ${"list".$key} = $val;
     echo $list0;
     echo $list1;
?>

我想不出使用 list() 的方法。您还在第一次迭代中从循环返回,这没有多大意义,并进行了一些冗余计算。此外,您创建的 $list 变量过多(0 到 4 是 5 个变量,仅用于 4 个项目)。

您只需要:

foreach (explode(' , ', $long_string) as $k => $v) {
    ${"list$k"} = $v;
}

无论如何,我对整体设计有顾虑。多亏了 explode(),你已经有了一个方便的数组,这比你无法轻易列出或枚举的无处不在的自变量更有用。