基本的に私は次のコードを持っています:
unset($items[array_search($i,$items)]);
キーが見つからない場合、array_search は false を返します。これは 0 を返すのと同じです。項目の値が見つからない場合、配列の要素 0 が削除されます。
これに対する回避策はありますか?
$itemindex = array_search($i,$items);
if ($itemindex !== false) {
unset($items[$itemindex]);
}
別の変数と厳密な比較を使用すると、実際に配列からアイテムが見つかった場合にのみ unset() を実行します。0 は array_search 呼び出しの有効な戻り値でもあり、その場合はunset() を実行する必要があるため、false との比較を使用!==
すると、false と 0 の混同を避けることができます。
if(($i = array_search($i,$items)) !== false) {
unset($items[$i])
}
可能な回避策です。
array_search
値を含む (最初の) キーを返すfalse
か、値が存在しない場合。つまり、false
を呼び出す前に、次unset
のように確認する必要があります。
$ix = array_search($i,$items)
if($ix !== false) {
unset($items[$ix]);
}