4

我有一个正在迭代的 foreach 循环。我正在尝试将变量“分解”成碎片,然后使用 list() 附加到相应的数组中,如下所示:

list($a[], $b[], $c[]) = explode(':', $loop);

list() 可以不这样做吗?它与

致命错误:字符串不支持 [] 运算符

我想我可以在 list() 中使用临时变量,然后将它们附加到相应的数组中,如下所示:

foreach($array as $loop) {
    list($a1, $b2, $c3) = explode(':', $loop);

    $a[] = $a1;
    $b[] = $b2;
    $c[] = $c3;
}

这是否有更好/更有效的方法来执行此操作(例如完全使用 list())?

4

2 回答 2

2

list构造需要一个有效的变量表达式,例如数组和索引:

foreach ($array as $i => $loop) {
    list($a[$i], $b[$i], $c[$i]) = explode(':', $loop);
}

然后一切正常。演示

此外,如果这实际上是数组,它也可以工作:

$a = $b = $c = array();

foreach ($array as $loop) {
    list($a[], $b[], $c[]) = explode(':', $loop);
}

演示

于 2012-10-14T22:12:37.823 回答
1

是的,你可以..只需添加Index不初始化变量

list($a[0], $b[0], $c[0]) = explode(":","A:B:C") ;
var_dump($a,$b,$c);

或初始化变量

$a = $b = $c = array();
list($a[], $b[], $c[]) = explode(":","A:B:C") ;
var_dump($a,$b,$c);

输出

array
  0 => string 'A' (length=1)
array
  0 => string 'B' (length=1)
array
  0 => string 'C' (length=1)
于 2012-10-14T22:11:12.990 回答