0

基本的に私は次のコードを持っています:

unset($items[array_search($i,$items)]);

キーが見つからない場合、array_search は false を返します。これは 0 を返すのと同じです。項目の値が見つからない場合、配列の要素 0 が削除されます。

これに対する回避策はありますか?

4

3 に答える 3

4
$itemindex = array_search($i,$items);
if ($itemindex !== false) {
  unset($items[$itemindex]);
}

別の変数と厳密な比較を使用すると、実際に配列からアイテムが見つかった場合にのみ unset() を実行します。0 は array_search 呼び出しの有効な戻り値でもあり、その場合はunset() を実行する必要あるため、false との比較を使用!==すると、false と 0 の混同を避けることができます。

于 2013-08-13T09:04:03.813 に答える
1
if(($i = array_search($i,$items)) !== false) { 
    unset($items[$i]) 
}

可能な回避策です。

于 2013-08-13T09:03:37.510 に答える
0

array_search値を含む (最初の) キーを返すfalseか、値が存在しない場合。つまり、falseを呼び出す前に、次unsetのように確認する必要があります。

$ix = array_search($i,$items)
if($ix !== false) {
    unset($items[$ix]);
}
于 2013-08-13T09:04:14.670 に答える