これを行う簡単な方法はありますか?
$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = 21;
$i = 0;
foreach ($array as $value ){
if( $value == $remove)
unset($array[$i])
$i++;
}
//array: 1,57,5,84,8,4,2,8,3,4
array_search
答えは良いです。あなたもarraydiff
これが好きかもしれません
$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = array(21);
$result = array_diff($array, $remove);
配列内で最初に出現するアイテムを削除する場合はarray_search
、独自のループをロールするのではなく、を使用して配列内のアイテムのインデックスを検索します。
$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = 21;
$index = array_search($remove, $array);
if (index !== false)
unset($array[$index]);
すべての重複を削除するには、一致するものが見つかるまで検索/削除を再実行します。
while (false !== ($index = array_search($remove, $array))) {
unset($array[$index]);
}
または、値が一致するすべてのキーを見つけて削除します。
foreach (array_keys($array, $remove) as $key) {
unset($array[$key]);
}
これは少しきれいです:
foreach($array as $key => $value) {
if ($value == $remove) {
unset($array[$key]);
break;
}
}
アップデート
または、一致しない値を一時配列に配置してから、元の値をリセットすることもできます。
$temp = array();
foreach($array as $key => $value) {
if ($value != $remove) {
$temp[$key] = $value;
}
}
$array = $temp;