簡體   English   中英

PHP在循環中取消設置數組

[英]PHP unsetting array in loop

我試圖修改一個名為field_data的現有數組,並刪除具有control == offkey->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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM