使用PHP,list()是否可以附加到数组中?

使用PHP,list()是否可以附加到数组中?,php,foreach,Php,Foreach,我有一个foreach循环,我正在迭代。我试图将一个变量“分解”成若干部分,然后使用list()将其附加到相应的数组中,如下所示: list($a[], $b[], $c[]) = explode(':', $loop); foreach($array as $loop) { list($a1, $b2, $c3) = explode(':', $loop); $a[] = $a1; $b[] = $b2; $c[] = $c3; } list()不能这样做

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

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

    $a[] = $a1;
    $b[] = $b2;
    $c[] = $c3;
}
list()不能这样做吗?这是错误的

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

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

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

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

这是否有更好/更有效的方法(例如完全使用list())。。只需添加
索引
,而无需初始化变量

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)
构造需要有效的变量表达式,如数组和索引:

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);
}

如果我将
$a、$b、$c
初始化为数组,那么第一行实际上对我有效。实际上,我可以使用
[]
list()
直接插入数组元素。在你的代码中,
$array
中有什么?啊,k。我没有意识到这一点,但我只是在
list()
中首先初始化
$a、$b、$c
。(仅供参考,这是一个编程否?)
$array
是一个包含10-20个字符串的数组(字符串是URL的后半部分,如
'/questions/12886947/'
)@Coldblackice:适用于我:-您的问题是您没有首先初始化那里的变量,而是重复使用其中一个,这就是您看到错误消息的原因。如果它们被初始化(哦,对不起,你刚刚添加了…)对我有效。如果你添加索引@Michael,它们就不必这样做Berkowski@MichaelBerkowski:如果未设置初始化,您甚至可以跳过初始化。OP的问题是其中一个正在被重复使用。看,一种方法会比另一种更“专业”吗?也就是说,事先初始化一些东西是否是更好的编程习惯/礼仪?我想知道我是否懒得先初始化
list()
@Coldblackice中的某些内容:好吧,在你的情况下——不管是懒散还是不懒散——你只是犯了一个错误。如果您自己的编码规则帮助您改进代码,那么初始化可能会阻止您这样做。但是,我想说,正确理解错误消息更重要,因为这将对您有更多帮助。PHP假设子字符串访问,所以您可以嗅到其中一个“我希望它们是数组”实际上是一个字符串。在变量重用时发生。不要重复使用变量在这里更专业。因此,在第二个示例(初始化变量)中,是否有必要在
列表()中的每个变量之后添加
[]
?或者PHP会知道附加到数组上吗?@Coldblackice。。对不起,我错过了