【问题标题】:Define 2D array with loops in php在php中定义带有循环的二维数组
【发布时间】:2011-03-02 05:56:26
【问题描述】:

我有一个数组$rows,其中每个元素是一行 15 个制表符分隔的值。我想将$rows 分解为一个二维数组$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])));  
}

【问题讨论】:

    标签: php arrays loops multidimensional-array


    【解决方案1】:
    $rowData = array();
    foreach($rows as $value) {
      $rowData[] = explode("\t", $value);
    }
    

    【讨论】:

      【解决方案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 都会被完全覆盖——您想要的是在不删除旧元素的情况下向其中添加新元素。

      【讨论】:

      • 感谢您的解释,我愚蠢地没有意识到我什至调用了 array() 函数。信息量很大!
      猜你喜欢
      • 2020-06-20
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多