2013-01-22 50 views
0

AFAIK - in_array()應返回TRUEFALSEin_array()工作正常,但會拋出錯誤?

在我而言,它驗證爲真 - 但仍然拋出一個錯誤:

[function.in-array]: Wrong datatype for second argument

線路是這樣的:

in_array($key,$instance['cfl2']); 

$instance['cfl2']是驗證array它看起來像這樣:

array(2) { [0]=> string(8) "price" [1]=> string(6) "age" }

我的問題是:

  • 我在做什麼錯。
  • 爲什麼它拋出一個錯誤(但仍然工作正常,並返回true)
  • 問題是因爲我使用某種嵌套數組? (這意味着一個數組項$instance['cfl2']實際上是由它本身的數組

我也試過$is = $instance['cfl2']in_array($key,$is) - 但結果卻是相同的錯誤

+1

嘗試'in_array($鍵,(陣列)$實例[ 'CFL2'] )' –

+2

這很奇怪。什麼說'gettype($ instance ['cfl2'])'? –

+0

@BobSponge - 嗯 - 似乎工作。沒有錯誤!謝謝 。添加它作爲答案,我會接受它。但我也可以知道爲什麼它這樣做,如果有錯誤,爲什麼它仍然驗證爲真? –

回答

2

您可以投一個變量,數組來避免這個錯誤:

in_array($key, (array) $instance['cfl2'])

0

in_array()將處理爲in_array("search", $instance)

如果。您使用的是嵌套或多維數組,然後in_array()將無法​​正常工作,您應該編寫一個單獨的函數來處理此問題,或者使用array_key_exists()代替它,它將適用於某些特定的情況,請確定您的需求是否得到滿足

if(array_key_exists($key,$instance['cfl2'])) 
相關問題