[英]Type cast not working on array
foreach((array)$arr['subarr'] as &$foo)
....
...不起作用 它將引發解析錯誤。
為什么?
您不能轉換為數組,並且不能同時使用這些項目作為參考。
$foo
它實際上不是數組會發生什么?
強制轉換僅適用於循環。
$arr['subarr'] = array('one', 'two');
// make sure we have an array
if (!is_array($arr['subarr'])) {
$arr['subarr'] = array($arr['subarr']);
}
foreach($arr['subarr'] as &$foo) {
print($foo);
}
為什么?
這可能會給它帶來一些啟示,但是我不確定這是否是事實。 至少有一定道理:
如果使用&$foo
,則要為迭代的每個值取別名。 但是當您轉換數組時,它不作為值存在,PHP無法為其創建別名(或者至少這沒有意義)。
代替:
foreach ((array)$arr['subarr'] as &$foo)
執行此操作,該方法可能會起作用,並且可能是您要查找的內容:
$subarray = (array) $arr['subarr'];
foreach ($subarray as &$foo)
要么
$arr['subarr'] = (array) $arr['subarr'];
foreach ($arr['subarr'] as &$foo)
出什么問題了:
foreach($arr['key'] as $foo){}
或者您的目標是:
foreach($arr as $key => $foo)
$ arr是數組,$ key是索引,$ foo是值嗎?
如果您要檢查$arr['subarr']
是否為數組,然后跳過不是這樣的代碼塊,則可以使用此代碼-
if(is_array($arr['subarr'])) :
foreach($arr['subarr'] as &$foo) :
{Your code here}
endforeach;
endif;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.