在foreach循环错误

时间:2015-05-07 20:45:08

标签: php arrays csv

我有一个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[]给了我这个问题。以下是操作中脚本的链接

http://euryalosstudios.com/api/new1.php

3 个答案:

答案 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');

并显示输出