2014-01-28 57 views
0

我無法想象我在這裏做錯了什麼,但是當我嘗試合併兩個數組時,我得到Argument #2 is not an array。參數#2當然是一個數組,但PHP感覺不同。具體如我所能得到的代碼。 $bigKeys$littleKeys是從數據庫中提取的,所以我不知道它們是否爲空。所以我檢查!我有:參數#2不是數組

return array_merge(
    $bigKeys ? $bigKeys : array(), 
    $littleKeys ? $littleKeys : array() 
); 

現在的事情是,在情況下,我測試,$littleKeysNULL,因此它應該最終會被根據三元我有一個空數組。

gettype($littleKeys ? $littleKeys : array()); // This returns "array" 

那麼世界究竟在發生什麼?

+2

如果$ bigKeys = true會怎樣?你沒有檢查他們是否是數組。只有它們以某種方式存在。 –

+0

'var_dump($ littleKeys);'顯示了什麼? –

+0

'var_dump($ littleKeys);'在三元返回NULL之前' –

回答

3

我的代碼更改爲:

return array_merge(
    is_array($bigKeys) ? $bigKeys : array(), 
    is_array($littleKeys) ? $littleKeys : array() 
); 

彷彿你的變量($bigKeys$littleKeys)是例如,在一個字符串,true,或什麼的,它的計算結果爲true。所以你不能確定數組是否傳遞給了array_merge()函數。這很可能會解決您的問題(因爲我相信array_merge函數中存在一些瘋狂的bug;))

相關問題