2013-12-11 69 views
0

我在修改一個名爲field_data的現有數組,並刪除control == off對的key->value對的父數組。所以在這個例子中我想取消設置Array [1]。然而,它不工作,我做錯了什麼?循環中PHP不設置數組

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 

         ) 
       ) 
     ) 

回答

2

你試圖刪除PHP仍在使用,特別是內循環遍歷數組變量。

你檢查你的方式甚至不需要內部循環。我會做這樣的事情:

foreach($field_data[0] as $skey => $svalue) { 
    if(array_key_exists('Control', $svalue) && $svalue['Control'] == 'OFF') { 
     unset($field_data[0][$skey]); 
    } 
} 
0

試試這個...

unset($field_data[0][$subsection]); 
0

我認爲你不應該修改你正在迭代的數組。 創建一個鍵陣列來刪除,然後迭代結果和復位鍵

$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]); 
}