2010-01-20 50 views
0

因此,我使用PHP函數fgetcsv來解析.csv文件(逗號分隔,字段用「」括起來)並將其導入到MySQL中。問題是,某個字段總是空的,即使它有時包含「0」。所以我猜這個函數認爲「」和「0」爲空值,但對我來說這是相當成問題的。有任何想法嗎?fgetcsv和「0」值

編輯 - 代碼:

$handle = fopen("/home/simon/projet-web/Quebec.csv", "r"); 

if ($handle) 
{  
    while($line = fgetcsv($handle, 0, ",", "\"")) 
    { 
    if ($line[55] === "0") 
     echo $line[55] . "/" . $line[4] . "<br />"; 
    [...] 
+0

我們需要的不僅僅是這個 - 你能否包含完整的fgetcsv塊? – 2010-01-20 18:29:10

+0

沒關係,我發現我的錯誤。我意識到,在我嘗試了這裏提出的所有建議之後,我沒有測試正確的變量。是的,因爲聽起來可能遲緩,那就是錯誤T_T。 – Afrosimon 2010-01-22 19:43:43

回答

1
+0

+1只有公平,你先到那裏。 :-) – 2010-01-20 17:27:52

+0

已經嘗試過 - 我只是添加了代碼。不會改變任何東西,沒有任何東西能夠通過這個條件(就像函數將這個值視爲null並且它給出的值爲「line [55]」)。 – Afrosimon 2010-01-20 17:31:13

+0

值的數組(從單行開始)將始終包含字符串。所以你沒有0作爲整數,但作爲一個字符串。你應該檢查:... ===''是否返回true - 那麼你有一個空的列。 ... ===如果列包含零,則'0'返回true – Crozin 2010-01-20 17:41:49

1

您應該能夠利用告訴一個零輸入和空場之間的區別如下...

if($currentRow[$currentIndex] === 0) 

...檢查零的存在。 (同樣的邏輯適用於使用返回0或false的函數,比如strpos - 在這種情況下,你會檢查!== false等)

正如Crozin所說,這是相同的比較運算符,它檢查類型以及值的等價性。

+0

是的,就像在我對Crozin的評論中一樣,這看起來沒有幫助(儘管它應該)。肯定有關於fgetcsv的一些事情讓我無法迴避。 – Afrosimon 2010-01-20 17:32:58