Ich schrieb ein einfaches Skript, das eine CSV-Datei lädt, aber das fgetcsv, aber ein Array zurückgibt, so kann ich foreach Schleife nicht verwenden, um etwas wie Suchen zu tun.fgetcsv gibt kein Array zurück
$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()
}
}
wenn der foreach-Sicht ist es ein Fehler, aber sehr seltsam, wenn ich print_r ($ ar) verwenden, wird die csv als ein Array eine Zeile
Wer weiß, drucken, was das Problem ist, ?
table.csv (in UTF-8-Format)
時裝,上衣,襯衫,Shirt,Top * 10 row
vollständige Code
<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>
Können Sie pri nt_r (fgetcsv ($ f_pointer)) zuerst und zeigen Sie die Ausgabe? –
Array ([0] => 時裝 [1] => 上衣 [2] => 襯衫 [3] => Shirt [4] => Top) 1 – hkguile
Hat meinen obigen Kommentar bearbeitet. –