我有一个CSV file,我试图使用PHP解析成一个数组。这是我的代码:
<?php
echo "hi";
$csvData = file_get_contents('2.csv');
$lines = explode(PHP_EOL, $csvData);
$array = array();
$x=0;
foreach ($lines as $line) {
$array[] = str_getcsv($line);
$x=$x+1;
}
echo $x;
print_r($array);
echo "<font size=\"10\" color=\"green\">DONE</font>";
?>
当我运行此脚本时,我得到一个没有错误的空白页面。所以我添加并打印出声明“hi”。所以现在当我运行这个脚本时,我只得到“hi”
我做了一些故障排除,我发现了这一行
$array[] = str_getcsv($line);
具体来说,$array[]
给了我这个问题。以下是操作中脚本的链接
答案 0 :(得分:1)
尝试使用fgetcsv
而不是爆炸PHP_EOL
文件内容。 e.g:
$fh = fopen('2.csv', "r");
$lines = array();
while ($row = fgetcsv($fh)) {
$lines[] = $row;
}
echo count($lines);
print_r($lines);
答案 1 :(得分:1)
你的文件2.csv是20MB,可能你正在按照这样的内存限制
2015/05/08 00:22:49 [error] 7202#0: *1164289 FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 11 bytes) in /var/www/xxxxxx.com/so/go.php on line 10" while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: www.xxxxxx.com, request: "GET /so/go.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "xxxxxx.com", referrer: "http://xxxxxx.com/so/"
我的服务器上出现此错误。
答案 2 :(得分:0)
首先,检查你的php版本,因为str_getcsv可以从php 5.3.0中获得 在第二个添加几行
error_reporting(E_ALL);
ini_set('display_errors', 'On');
并显示输出