Данные функции удаляют элемент из массива но и удаляют вместе с ним и ключ. И если нужно пройти по массиву циклом после удаления то получаем ошибку. Поэтому нужно добавить команду после удаления, т.е. после прохождения всего цикла: Код (Text): $array = array_values($array);
не увидел здесь вопроса, а на рецепт это как-то не тянет по причине скудности описания. дополню: "проблема" с дырками в индексе может возникнуть только с циклом for. foreach перебирает массив с любыми индексами. array_values() создаёт новый массив, на всякий случай если кто не в курсе.
цикл for может отработать по массиву с удалениями если идти с конца for ($i = count($array); $i >=0; $i-- { а тут уже удаляй $array[$i] сколько хочешь }
А всё ведь гораздо проще, или просто год уже не тот на календаре? : $someArray = array_diff($someArray, $someOtherValuesArray);
@artoodetoo, как о чём? О топикстартере. Удалить елемент массива по значению. Причём, удаляется любое количество вхождений.
Я не понимаю, что вас смущает, но я прекрасно реализовал функционал удаления элементов по значению благодаря этой функции. Использование функции array_diff для удаления значений массива.
Ну, в копилку нестандартных решений. Если массив упакован в строку, например в json, то можно использовать preg_replace()