我试图在foreach
循环中使用unset
,但它不起作用。
我的代码:
$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
,但这个密钥应该被删除,而不是。
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);
}
}