Вместо выполнения цикла foreach () для массива было бы быстрее использовать array_search () для поиска правильного ключа. Для небольших массивов я бы использовал foreach для лучшей читабельности, но для больших массивов или часто выполняемого кода это должно быть немного более оптимальным:
$result=array_search($unwantedValue,$array,true);
if($result !== false) {
unset($array[$result]);
}
Требуется оператор строгого сравнения! ==, поскольку array_search () может возвращать 0 в качестве индекса $ unwantedValue.
Кроме того, приведенный выше пример удалит только первое значение $ unwantedValue, если $ unwantedValue может встречаться в массиве $ более одного раза, вы должны использовать array_keys (), чтобы найти их все:
$result=array_keys($array,$unwantedValue,true)
foreach($result as $key) {
unset($array[$key]);
}
Проверьте http://php.net/manual/en/function.array-search.php для получения дополнительной информации.