2012-07-21 37 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