事情的經過是這個樣子的
像往常一樣,來到公司打開電腦,準備工作,這時來了一條微信消息,說導入的功能報錯了,于是乎,我開始判斷程式是不是哪裡出問題了。拿着傳給我的csv檔案開始測驗。
== 一步步測試,先查詢是否導入時是否擷取csv檔案中的資料,結果列印出來的界面是這個樣子的==
這是什麼情況呢?
然後就開始百度搜查,驗證,
1.為什麼會出現亂碼呢?
2.是什麼原因導緻的呢?
3.跟csv裡的工作表個數有關系嗎?
各種網上查詢,最終跟我寫的都是差不多一樣的啊
public function actionCsv()
{
$fileName = "test.csv";
$handle = fopen($fileName, 'r');
$result = self::input_csv($handle); //解析csv
var_dump($result);
}
private function input_csv($handle)
{
$out = array ();
$n = 0;
while ($data = fgetcsv($handle))
{
$num = count($data);
for ($i = 0; $i < $num; $i++)
{
$out[$n][$i] = iconv('gbk','utf-8',$data[$i]);
}
$n++;
}
return $out;
}
各種嘗試,各種修改,都無效,感覺人生崩潰了,我該怎麼辦???
最後突然頓悟了,會不會是給我的csv檔案是有問題的呢,于是自己建立了一個test.csv裡面的内容如下:
姓名 | 年齡 | 性别 |
---|---|---|
張三 | 18 | 男 |
李四 | 20 | 女 |
王五 | 22 | 男 |
然後繼續運作代碼解析csv内容,解析内容如下:
至此,我才恍然大悟,原來不是我的程式出現了問題,而是給我的csv檔案的問題。
看來我的解題思路還是不夠全面啊,這也算是給我敲了個響鐘,遇到問題不能鑽牛角尖,一條路走不通,就換條路走,說不定就守得雲開見月明了。