将 csv 解析为数组并在表 ERROR 上显示单元格


Parsing csv into array and displaying cells on table ERROR

>我正在尝试从csv文件中获取所有单元格并将它们显示在HTML表格上。我正在使用parsecsv来获取数据,那里没有问题。但是,当我尝试遍历数组元素以将它们放入另一个临时数组时,服务器由于内存问题而停止。我看不出代码有任何问题

    <?php
require_once('parsecsv/parsecsv.lib.php');
if (isset($_POST["submit"]))
{
    if ($_POST["row"] != "" && $_POST["column"] != "")
    {
        $column = $_POST["column"];
        $row    = $_POST["row"];
        $csv = new parseCSV();
        $csv->auto('example.csv');
        $random = array();
        foreach ($csv->data as $key => $row)
        {
            foreach ($row as $value)
            {
                array_push($random, $value);
            }
        }
        $table = <<<EOD
<style type="text/css">
table, tr, td
{
    padding: 10px;
}
    </style>
EOD;
        $table .= '<table border="1">';
        for ($i = 0; $i < $row; $i++)
        {
            $table .= '<tr>';
            for ($j = 0; $j < $column; $j++)
            {
                $table .= '<td>';
                $table .= '<p style="text-align:center;">I"m not even trying to display the data</p>';
                $table .= '</td>';
            }
            $table .= '</tr>';
        }
        $table .= '</table>';
        echo $table;

当我删除"foreach"部分时,它可以工作。

这是错误消息

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 133693408 bytes) in /home/ubuntu/workspace/create_pdf.php on line 41 Call Stack: 0.0005 240672 1. {main}() /home/ubuntu/workspace/create_pdf.php:0

编辑

当我以另一种方式尝试相同的迭代时,它的工作原理

这是代码:

$csv = new parseCSV();
$csv->auto('example.csv');
$random = array();
foreach ($csv->data as $key => $row){
   foreach ($row as $value){
     array_push($random, $value);
   }
}
print_r($random);
?>
</pre>
<style type="text/css" media="screen">
  table { background-color: #BBB; }
  th { background-color: #EEE; }
  td { background-color: #FFF; }
  td,tr {
    padding:10px;
  }
</style>
<table border="1" cellspacing="1" cellpadding="3">
  <tr>
    <?php foreach ($csv->titles as $value): ?>
       <td><?php echo $value; ?></td>
    <?php endforeach; ?>
  </tr>
       <?php foreach ($csv->data as $key => $row): ?>
  <tr>
         <?php foreach ($row as $value): ?>
           <td><p style="text-align: center;"><?php echo $value; ?></p></td>
         <?php endforeach; ?>
  </tr>
        <?php endforeach; ?>
</table>

您在没有足够的 php 内存的情况下运行脚本。您可以在 php 中设置memory_limit.ini或者如果您将其作为 php 脚本运行,您可以执行以下操作:

php -dmemory_limit=-1 your/script.php