2013-10-24 18 views
0

基本上,我正在運行一個if statement如果我的數組是空的。爲什麼我的PHP數組沒有輸入函數,因爲它不是空的?

例如:

$csv = array(); 

$csv_empty = array_filter($csv); 

if (!empty($csv_empty)) 
{ 
    Other code goes here 
} 

unset($csv); 

不幸的是,我的if statement未進入的。這裏是我的數組的轉儲:

Array 
(
    [0] => Array 
     (
      [0] => [email protected] 
      [1] => [email protected] 
      [2] => [email protected] 
     ) 

) 

如果需要的話,這是怎麼被創建了陣列,通過CSV文件上傳(這不是if語句我reffering到這if語句運行完全正常。沒有其他空數組檢查if發言):

if(($handle = fopen($tmpName, 'r')) !== FALSE) 
{ 
    $row = 0; 

    while (($result = fgetcsv($handle)) !== false) 
    { 
     $csv[] = $result; 
    } 
    fclose($handle); 
} 

任何人有任何想法,爲什麼我的if statement沒有運行?這可能是因爲我的數組是2級?如果我將數組更改爲單個級別,這是否能解決我的問題?

+0

if($ handle = fopen($ tmpName,'r'))!== FALSE) – zod

+0

@zod - 但是如果沒有我的'if語句',那部分就可以運行嗎?一旦我在所有內容中添加了「if語句」,它就會停止工作。 – Fizzix

+0

如果數組已從回調函數(例如添加,刪除或未設置的元素)更改,則此函數的行爲未定義。 – zod

回答

1

根據您所提供的東西,我沒有看到任何問題:

$csv = array(0 => array(0 => '[email protected]' ,1 => '[email protected]' ,2 => '[email protected]')); 

$csv_empty = array_filter($csv); 

if(! empty($csv_empty)) 
    echo 'In If'; 
else 
    echo 'In Else'; 

顯示:

In If 

但如果我認爲陣列有false S作爲這一項目時,得到由array_filter過濾:

$csv = array(0 => false ,1 => false); 

$csv_empty = array_filter($csv); 

if(! empty($csv_empty)) 
    echo 'In If'; 
else 
    echo 'In Else'; 

顯示

In Else 

我與數據想着你的問題可能在別處可能。

+0

在我將代碼封裝在檢查數組是否爲空的'if語句之前,程序無縫工作。所以數據一定很好。 – Fizzix

+0

那麼我會不安排陣列會導致這個問題嗎? – Fizzix

+0

之後未設置陣列無法創建問題。以防萬一你使用任何'回調函數?也可以嘗試使用'display_errors'開啓測試。 – Uours

0

你應該真的使用count($ csv_empty)> 0而不是空的那個if。

+0

仍然沒有進入'if語句'... – Fizzix

相關問題