2014-03-12 48 views
2

這可能是一個非常微不足道的問題,但請耐心等待。我想讀大量的數據到關聯數組的數組中。這些數據包含很多空數組和數組,其中鍵被設置,但全部爲空值。我想忽略這些,並且只推送至少有一個映射到非空值的鍵的數組。 (數據來自一個Excel工作表,它有很多註冊爲「設置」反正空單元格)。到目前爲止,我曾嘗試:如何在php中檢查所有空值的關聯數組?

如果
(空($ {$ small_dummy})!) array_push($ {$ big_dummy},$ {$ small_dummy});

這樣可以擺脫空數組,而不是所有鍵映射到空的數組。有沒有更好的方法來做到這一點,而不是循環遍歷整個數組並彈出所有空值?

+0

如果你把它轉換成.csv文件,我想你可能會有更多的運氣。 – Zy0n

回答

3

通過你已有的代碼來看,你可以改變:

if(!empty(${$small_dummy})) 

到:

if(!empty(array_filter(${$small_dummy}))) 

這將過濾掉所有空值(值計算到FALSE要準確)和檢查如果結果數組爲空。另請參閱array_filter()上的手冊。

請注意,這也會過濾0值,因此您可能需要爲array_filter()編寫自定義回調函數。

+1

謝謝!唯一的事情是,根據解析器,array_filter不會「返回到寫入上下文」,所以我必須讓它返回到一個變量,並讓if語句評估 – Yitzchak

0

這不是一個理想的方法,但如果所有值都不能轉換爲數字值,則array_sum將返回0。所以:

$small_dummy = array("a" => null, "foo", "", 0); 

if(array_sum($small_dummy) === 0) 

會通過。但是,如果您期待值是數值,這只是一條路。

實際上,如果問題是數組鍵的值,併爲此不傳球爲empty(),在與array_values去:

if(!empty(array_values(${$small_dummy}))) 
0

你可以嘗試,如果(array_filter($陣列)!){還

相關問題