PHP:unset在foreach中不起作用

时间:2012-07-21 16:59:02

标签: php foreach unset

我尝试在unset循环中使用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]);
}

在第二次迭代中,我的密钥是eq $key.'_h'.$pos_key,但是这个密钥应该被删除而不是。

1 个答案:

答案 0 :(得分:1)

PHP生成数组的副本以迭代它。既然你最终得到一个空数组,请使用堆栈:

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