1

ループで使用しようとして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]);
}

2 回目の反復では、私のキーは eq$key.'_h'.$pos_keyですが、このキーは削除する必要がありますが、そうではありません。

4

1 に答える 1

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);
    }
}
于 2012-07-21T17:06:00.060 に答える