在php中使用循环定义2D数组

时间:2010-06-10 15:31:42

标签: php arrays loops multidimensional-array

我有一个数组$rows,其中每个元素都是一行由15个制表符分隔的值。我想将$rows分解为2D数组$rowData,其中每一行都是一个数组元素,每个制表符分隔的值都分配给不同的数组元素。我试过这两种方法没有成功。我知道第一个有编码错误,但我不知道如何纠正它。任何帮助都会很棒。

for ($i=0; $i<count($rows); $i++){
    for ($j=0; $j<15; $j++){
    $rowData = array([$i] => array (explode("   ", $rows[$j])));
    }  
}  

foreach ($rows as $value){
    $rowData = array( array (explode("  ", $rows[$value])));  
}

2 个答案:

答案 0 :(得分:5)

$rowData = array();
foreach($rows as $value) {
  $rowData[] = explode("\t", $value);
}

答案 1 :(得分:2)

for ($j=0; $j<15; $j++) {
    $rowData[$j] = explode("\t", $rows[$j]);
}

要展开:以下代码的问题:

$rowData = array([$i] => array (explode("   ", $rows[$j])));

是你似乎并不知道你所写的不同内容是什么意思。

对array()的调用返回一个带有指定元素的新数组。所以array (explode(" ", $rows[$j]))产生一个包含单个元素的数组,即explode()返回的数组。并且您将其包含在另一个array()调用中,将循环变量$i指定为与该元素对应的键。此外,您正在使用赋值符号=,这意味着每次进行循环时,$rowData都被完全覆盖 - 您想要的是在不删除的情况下向其中添加新元素旧的。