fgetcsv不返回数组

时间:2016-09-30 06:55:12

标签: php

我写了一个简单的脚本,它将加载一个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>

1 个答案:

答案 0 :(得分:0)

数组fgetcsv(资源$ handle [,int $ length = 0 [,string $ delimiter =“,”[,string $ enclosure ='“'[,string $ escape =”\“]]]])

你的分隔符是什么?和围栏?