我写了一个简单的脚本,它将加载一个csv文件,但是fgetcsv但是返回一个数组,所以我不能使用foreach循环来做类似搜索的事情。
$f_pointer=fopen("table.csv","r"); // file pointer
while(!feof($f_pointer)) {
$ar=fgetcsv($f_pointer);
foreach ($ar as $str1) {
//Warning:Invalid argument supplied for foreach()
}
}
如果foreach运行,有一个错误,但很奇怪,如果我使用print_r($ ar),它会将csv作为一个数组打印一行
任何人都知道这是什么问题?
table.csv(采用utf8格式)
時裝,上衣,襯衫,Shirt,Top * 10 row
完整代码
<html>
<head>
<meta charset="UTF-8">
</head>
<?php
$search = array('時裝','女裝','上衣');
$cat1 = "";
$cat2 = "";
$f_pointer=fopen("table.csv","r"); // file pointer
while(! feof($f_pointer)) {
$ar=fgetcsv($f_pointer);
//echo print_r($ar); // print the array
$i = 0;
//echo count($ar);
if (is_array($ar)) {
foreach ($ar as $str1) {
echo trim($str1);
// will print full str 時裝上衣襯衫ShirtTop
/*if (trim($str[$i]) == $search[$i]) {
if ($i == 1 )
$cat1 = $str[3];
if ($i == 2)
$cat2 = $str[4];
}
$i++;
if ($i == 3) break;*/
//echo $str;
}
}
echo "<br>";
}
echo 'cat1='.$cat1.'<br>';
echo 'cat2='.$cat2.'<br>';
?>
</html>
答案 0 :(得分:0)
数组fgetcsv(资源$ handle [,int $ length = 0 [,string $ delimiter =“,”[,string $ enclosure ='“'[,string $ escape =”\“]]]])
你的分隔符是什么?和围栏?