PHP仅打印CSV的第一行

PHP仅打印CSV的第一行,php,csv,Php,Csv,我在读取CSV文件时遇到问题。到目前为止,我能够打开CSV并阅读第一行 我的CSV文件如下所示(注意每一行): 我在excel中将该文件保存为CSV,但每次换行都会被捕获 我当前的代码如下所示: <?php $file = fopen('surnames.csv', 'r'); $data = fgetcsv($file); echo "<pre>"; print_r($data); echo "</pre>"; fclose($file); ?>

我在读取CSV文件时遇到问题。到目前为止,我能够打开CSV并阅读第一行

我的CSV文件如下所示(注意每一行):

我在excel中将该文件保存为CSV,但每次换行都会被捕获

我当前的代码如下所示:

<?php 
$file = fopen('surnames.csv', 'r');

$data = fgetcsv($file);

echo "<pre>";
print_r($data);
echo "</pre>";

fclose($file);

?>
感谢您的帮助。我的预期输出显然是一个包含所有值的单个数组


谢谢。

您必须在每一行上循环阅读整个文件,否则您只能阅读文件中的第一行:

<?php 
$file = fopen('surnames.csv', 'r');

echo "<pre>";
while( ($data = fgetcsv($file)) !== false ) {
    print_r($data);
}
echo "</pre>";

fclose($file);

现在,
$data
将是一个多维数组,包含CSV文件中的每一行。

您必须在每一行上循环以读取整个文件,否则您只能读取文件中的第一行:

<?php 
$file = fopen('surnames.csv', 'r');

echo "<pre>";
while( ($data = fgetcsv($file)) !== false ) {
    print_r($data);
}
echo "</pre>";

fclose($file);
现在,
$data
将是一个多维数组,包含CSV文件中的每一行。

一次只获取一行。您的代码应该更符合以下内容:

一次只能获取一行。您的代码应该更符合以下内容:


您需要在
while
循环中进行严格比较,否则类型转换为
false
的值将中断循环,即使文件可能无法完全读取。而且,这不符合OP的要求:我的预期输出显然是一个包含所有值的单个数组。@nickb True。文件中的一个空行将导致返回
NULL
值,该值将粗略地计算为
false
。我也错过了最后一行,请对你的答案投赞成票。没问题,只是想指出。另外,为了澄清,我不相信会返回
NULL
,会返回一个空字符串,它的计算结果也是
false
@nickb,这就是它在中所说的。文档页面说会返回
array(NULL)
,它不会将强制转换为false。您需要在
while
循环中进行严格比较,否则,将该类型的值强制转换为
false
将中断循环,即使文件可能未完全读取。而且,这不符合OP的要求:我的预期输出显然是一个包含所有值的单个数组。@nickb True。文件中的一个空行将导致返回
NULL
值,该值将粗略地计算为
false
。我也错过了最后一行,请对你的答案投赞成票。没问题,只是想指出。另外,为了澄清,我不相信
NULL
会被返回,一个空字符串会返回,它也会粗略地计算为
false
@nickb,这就是它在中所说的。好吧,doc页面说
array(NULL)
会被返回,这不会将cast类型转换为false。
$data = array();
while( ($line = fgetcsv($handle)) !== false) {
    $data[] = $line;
}
<?php 
$file = fopen('surnames.csv', 'r');

echo "<pre>";
while( ($data = fgetcsv($file)) !== false ) {
    print_r($data);
}
echo "</pre>";

fclose($file);