2012-07-21 76 views
1

我試圖在foreach循環中使用unset,但它不起作用。PHP:未設置不在foreach中工作

我的代碼:

$aggr = $_GET; 
foreach($aggr as $key => $value) 
{ 
     $pos_key = preg_replace('/dst_addr/', '', $key); 
     // why this not works: 
     unset($aggr[$key]); 
     unset($aggr[$key.'_h'.$pos_key]); 
} 

在第二次迭代我的關鍵是情商$key.'_h'.$pos_key,但這個關鍵應該刪除,是不是。

+0

您是否嘗試過檢查,如果沒有設置''存在? – cybertextron 2012-07-21 17:03:57

+0

@philippe:如果它不存在,我們不會有問題:) – 2012-07-21 17:05:44

+0

是的,這個元素存在。 – 2012-07-21 17:06:05

回答

1

PHP使數組的副本迭代它。既然你結束了一個空數組,無論如何,使用堆棧:([$關鍵「_H」 $ pos_key] $匯聚)

$s = array_keys($_GET); 

while($c = array_pop($s)) { 
    $pos_key = str_replace('dst_addr', '', $key); 

    $i = array_search($key . '_h' . $pos_key, $s); 

    if($i !== false) { 
     array_splice($s, $i, 1); 
    } 
} 
+0

很難解決。 – 2012-07-22 11:13:04