[英]PHP unsetting array in loop
我試圖修改一個名為field_data的現有數組,並刪除具有control == off
的key->value
對的父數組。 所以在這個例子中我想取消設置Array [1]。 然而它不起作用,我做錯了什么?
foreach ($field_data['0'] as &$subsection) {
foreach ($subsection as $key => $value)
{
if($key=='Control' && $value =='OFF')
{ echo 'match'; unset($subsection); }
}
return $field_data;
}
Field_data
----------
Array
(
[0] => Array
(
[0] => Array
(
[SECTION_ID] =>
[Control] => ON
[1] => Array
(
[SECTION_ID] =>
[Control] => OFF
)
)
)
您正在嘗試刪除PHP仍在使用的變量,特別是內部循環正在循環的數組。
你檢查你的方式甚至不需要內循環。 我會做這樣的事情:
foreach( $field_data[0] as $skey => $svalue ) {
if( array_key_exists('Control', $svalue) && $svalue['Control'] == 'OFF' ) {
unset($field_data[0][$skey]);
}
}
嘗試這個...
unset($field_data[0][$subsection]);
我認為你不應該修改你正在迭代的數組。 創建一個要刪除的鍵數組,然后迭代結果和取消設置鍵
$targets = array();
foreach( $field_data[0] as $skey => $svalue ) {
if( array_key_exists('Control', $svalue) && $svalue['Control'] == 'OFF' ) {
targets[] = $skey;
}
foreach($targets as $target)
{
unset($field_data[0][$target]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.