Задать вопрос
yaleksandr89
@yaleksandr89
PHP developer

Как удалить элементы из массива по определенному значению?

Здравствуйте.
Подскажите, как решить задачу:
Напишите функцию, которая удалит всех учеников с фамилией Иванов из ассоциативного массива из 100 элементов, вида:

Сам массив:
$array = [
    [
        'name' => 'Иванов',
        'class' => '4 A'
    ],
    [
        'name' => 'Иванов',
        'class' => '4 A'
    ],
    [
        'name' => 'Иванов',
        'class' => '4 A'
    ],
    .....
    [
        'name' => 'Петров',
        'class' => '4 A'
    ],
    [
        'name' => 'Сидоров',
        'class' => '4 A'
    ],
];


Написал такой вариант:
foreach ($array as $doctor){
    if ($doctor['name']==='Иванов'){
        continue;
    }
    var_dump($doctor);
}

Только мне кажется, не совсем верно,ведь я не удаляю, а исключаю из перебора.
  • Вопрос задан
  • 782 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 2
Immortal_pony
@Immortal_pony Куратор тега PHP
$array = array_filter($array, function($element) { 
    return $element['name'] !== "Иванов";
});


Также хочу отметить, что:
1. Массив из которого мы удаляем - не ассоциативный
2. Крайне желательно после подобной фильтрации сделать ключи массива последовательными, например так:
$array = array_values($array). Это поможет избежать неожиданностей при json_encode, например ;)
Ответ написан
@Nujabes37
:DEATH
Проходитесь по массиву, если находите ученика(доктора) с фамилией Иванов, удаляете его из массива по индексу.
foreach ($array as $i => $doctor){
    if ($doctor['name']==='Иванов'){
        unset($array[$i]);
    }
}
var_dump($array);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы