揮発性のメモ2

http://d.hatena.ne.jp/iww/

配列でループしながら要素を削除する

<?
$list = array("abc","hoge","edf","hoge","ghi","jkl");

配列をループして、条件を満たした要素を削除する

動作しないパターン

<?
foreach( $list as &$v ){
    if($v=="hoge") unset($v);
}

参照でうまくいくと思ったけどダメだった

一旦配列がコピーされているような挙動らしい?

動作するパターン

<?
foreach( $list as $k => $v ){
    if($v=="hoge") unset($list[$k]);
}
print_r($list);
Array
(
    [0] => abc
    [2] => edf
    [4] => ghi
    [5] => jkl
)

PHPにおいて要素を削除しても添え字は詰まるわけではない。