我是PHP的新手,我真的需要你的帮助。我有一个CSV文件(名为*“Test.csv”),格式如下:
"ID";"Nom de famille";"Prénom";"Age";"Téléphone mobile";"Téléphone";"Téléphone 2";"Fax";"Adresse de messagerie";"Commentaires"
我需要PHP代码,可以计算特定CSV文件中的行数,并且还存储数组中每行的“Age”字段。
答案 0 :(得分:3)
我能想到的最强大的解决方案就是按记录读取文件记录,因为CSV数据可能包含里面值的新行
$ages = array(); $records = 0;
$f = fopen('data.csv', 'rt');
while (($row = fgetcsv($f, 4096, ';')) !== false) {
// skip first record and empty ones
if ($records > 0 && isset($row[3])) {
$ages[] = $row[3]; // age is in fourth column
}
++$records;
}
fclose($f);
// * $ages contains an array of all ages
// * $records contains the number of csv data records in the file
// which is not necessarily the same as lines
// * count($ages) contains the number of non-empty records)
答案 1 :(得分:1)
file功能仅供您使用。
此函数将整个文件读入数组。
以下是您需要的代码:
<?php
$ageArray = array();
$inputFile = 'filename.csv';
$lines = file($inputFile);
echo count($lines);
// count($lines) will give you total number of lines
// Loop through our array
foreach ($lines as $line_num => $line) {
$ageArray[] = $line[3]; //'Age';
}
//Here is the o/p
print_r($ageArray);
?>
注意:如果已启用fopen包装,则可以将远程URL用作具有此功能的文件名。但我希望你会使用本地文件。
快乐的PHP编码。
答案 2 :(得分:0)
对于Windows:
$count = substr_count(file_get_contents($filename), "\r\n");
尼克斯:
$count = substr_count(file_get_contents($filename), "\n");
您可以在此帖子中找到有关将单个字段提取到数组中的信息:
答案 3 :(得分:0)
我会保持简单。
function age($line)
{
$cols = explode(",",$line);
return $cols[3];
}
$lines = explode("\n",file_get_contents($filename));
$count = count($lines);
$ages = array_map("age",$lines);
答案 4 :(得分:0)
$fname='1.csv';
$line_cnt=0;
$age_arr=array();
if($fh=fopen($fname,'r'))
{
while(!feof($fh))
{
$str=fgets($fh);
if($str!='')
{
$line_cnt++;
$a=explode(';',$str);
$age_arr[]=$a[3];
}
}
fclose($fh);
}
echo 'line_cnt='.$line_cnt.'\n';
print_r($age_arr);