array_filter сделает это за вас. Вам просто нужно предоставить функцию обратного вызова фильтра:
function myFilter($Value){
if($Value == 'red'){
return false;
}
return true;
}
$Values = array("a" => "green", "red", "bicycle", "red");
$Values = array_filter($Values, 'myFilter');
возвращается:
array {
["a"] => "green"
[1] => "bicycle"
}
Функция фильтра должна возвращать true для значений, которые вы хотите сохранить, и false для тех, которые вы хотите удалить. Тогда просто продолжайте и используйте array_values, чтобы переиндексировать массив. например,
$Values = array_values(array_filter($Values, 'myFilter'));
Если вы делаете это внутри объекта и хотите вызвать метод фильтра внутри объекта, вы можете использовать эту форму для обратного вызова:
array_filter($Values, array($this,'myFilter'));