【问题标题】:PHP explode multidimensional arrayPHP 爆炸多维数组
【发布时间】:2012-08-03 04:09:36
【问题描述】:

我正在使用 file_get_contents() 导入文本文件。 在文本文件中,格式如下(示例):

3434,83​​,8732722
834,93,4983293
9438,43933,34983

等等...基本上它遵循以下模式:整数,逗号分隔它,第二个整数,另一个逗号分隔它,第三个整数,然后新行开始。我需要将其放入相应格式的表格中。所以换句话说,我会有一个 3 列的表,文本文件中的每一行都是表中的新行。

这必须用

转码成一个简单的html表格

我从来没有使用过多维数组并用它来分割文本。这就是我寻求帮助的原因。对此,我真的非常感激! :)

【问题讨论】:

  • 我所能做的就是使用 explode("\n", $file);分开行,除此之外,我不知道如何再次拆分它,也不知道如何以有效的方式将其组织成一张整洁的桌子。
  • 如果您知道如何遍历循环 (foreach),那么您可以自行考虑:)
  • 我实际上确实使用了一个 foreach 循环,但我没有得到预期的结果。我已经在这个简单的事情上坐了 4 个半小时,但似乎无法理解。我继续修改我的代码越多,它变得越混乱,我已经从头开始多次在我修改这段代码的时间里。
  • 看起来像 CSV 数据,请阅读fgetcsv() 文档。

标签: php arrays multidimensional-array explode dimensional


【解决方案1】:

您可以执行以下操作:

$filename = 'abc.txt';
$content = file_get_contents($filename);
$explodedByBr = explode('<br/>', $content);
$table = "<table border='1'>";
foreach ($explodedByBr as $brExplode) {
  $explodedByComma = explode(',', $brExplode);

  $table .= "<tr>";
  foreach ($explodedByComma as $commaExploded) {
    $table .= "<td>" .$commaExploded. "</td>";
  }
  $table .= "<tr/>";
}
$table .= "</table>";

echo $table;

abc.txt 的数据格式如下:

3434,83​​,8732722
834,93,4983293
9438,43933,34983

【讨论】:

    【解决方案2】:

    试试这个:

    将文件读入一个数组,然后通过 array_walk 处理数组的每一行,将其列化。

    <?php
    function addElements( &$v, $k ) {
        $v1 = explode( ',', $v ); // break it into array
        $v2 = '';
        foreach( $v1 as $element ) {
            $v2 .= '<td>'.$element.'</td>';
                // convert each comma separated value into a column
        }
        $v = '<tr>'.$v2.'</tr>'; // add these columns to a row and return
    }
    
    // read the whole file into an array using php's file method.
    $file = file( '1.txt' );
    // now parse each line of the array so that we convert each line into 3 columns.
    // For this, i use array_walk function which calls a function, addElements, 
    // in this case to process each element in the array.
    array_walk( $file, 'addElements' );
    ?>
    <html>
         <head></head>
         <body>
             <table border="0">
                 <?php echo implode('',$file);?>
             </table>
         </body>
    </html>
    

    希望对您有所帮助。请参阅 filearray_walk 的 php 文档。这些都是简单方便的功能。

    【讨论】:

    • Pushpesh,你的编码方式超出了我的想象。有没有办法可以制作一个真正简化的版本? :D
    • 哦!是吗?好吧,我将在 cmets 中添加此内容。 :)
    【解决方案3】:
    <?php
        $file = 'path/to/file.txt';
        echo '<table>';
        while(!feof($file)) {
            $line = fgets($file);
    
            echo '<tr><td>' . implode('</td><td>',explode(',',$line)) . '</td></tr>';
        }
        echo '</table>';
    ?>
    

    【讨论】:

      猜你喜欢
      • 2019-09-28
      • 2011-04-23
      • 1970-01-01
      • 2014-02-23
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多