為foreach()提供的無效參數(shù)我經(jīng)常遇到這樣的情況:處理數(shù)據(jù),這些數(shù)據(jù)既可以是數(shù)組,也可以是空變量,并提供一些foreach用這些數(shù)據(jù)。$values = get_values();foreach ($values as $value){
...}當您用非數(shù)組的數(shù)據(jù)填充外匯時,您會得到一個警告:警告:為[.]中的foreach()提供的無效參數(shù)假設(shè)不可能重構(gòu)get_values()函數(shù)要始終返回數(shù)組(向后兼容性,而不是可用的源代碼,無論其他原因如何),我想知道哪種方法是避免這些警告的最干凈和最有效的方法:鑄造$values數(shù)組初始化$values數(shù)組包扎foreach帶著if其他(請建議)
4 回答

喵喵時光機
TA貢獻1846條經(jīng)驗 獲得超7個贊
if (is_array($values) || is_object($values)){ foreach ($values as $value) { ... }}

largeQ
TA貢獻2039條經(jīng)驗 獲得超8個贊
請不要依賴鑄造作為解決方案。
注意:
例如:將布爾值轉(zhuǎn)換為數(shù)組 (array)bool
威爾 不結(jié)果是一個空數(shù)組,但是一個包含布爾值作為int的元素的數(shù)組: [0=>0]
或 [0=>1]
.
null
, false
, true
class
array
undefined
.
在使用之前,一定要測試您的輸入。建議:
快速類型檢查 :$array = is_array($var) or is_object($var) ? $var : [] ;
在使用foreach和 包扎 使用 try{}catch(){}
砌塊 在產(chǎn)品發(fā)布前設(shè)計適當?shù)拇a/測試 要根據(jù)適當?shù)母袷綔y試數(shù)組,可以使用 array_key_exists
在特定的鑰匙上, 始終將助手方法解壓縮到全局命名空間中,以減少重復(fù)代碼。
- 4 回答
- 0 關(guān)注
- 1287 瀏覽
添加回答
舉報
0/150
提交
取消