За последние 24 часа нас посетили 22416 программистов и 1141 робот. Сейчас ищут 666 программистов ...

Удалить елемент массива по значению

Тема в разделе "PHP для новичков", создана пользователем joost, 30 дек 2009.

  1. victort

    victort Активный пользователь

    С нами с:
    8 сен 2010
    Сообщения:
    86
    Симпатии:
    2
    Данные функции удаляют элемент из массива но и удаляют вместе с ним и ключ. И если нужно пройти по массиву циклом после удаления то получаем ошибку. Поэтому нужно добавить команду после удаления, т.е. после прохождения всего цикла:
    Код (Text):
    1. $array = array_values($array);
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    не увидел здесь вопроса, а на рецепт это как-то не тянет по причине скудности описания.

    дополню:
    "проблема" с дырками в индексе может возникнуть только с циклом for. foreach перебирает массив с любыми индексами.
    array_values() создаёт новый массив, на всякий случай если кто не в курсе.
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    цикл for может отработать по массиву с удалениями если идти с конца

    for ($i = count($array); $i >=0; $i-- { а тут уже удаляй $array[$i] сколько хочешь }
     
  4. Юрий Удовиченко

    Юрий Удовиченко Активный пользователь

    С нами с:
    26 сен 2011
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Хабаровск
    А всё ведь гораздо проще, или просто год уже не тот на календаре? :

    $someArray = array_diff($someArray, $someOtherValuesArray);
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
  6. Юрий Удовиченко

    Юрий Удовиченко Активный пользователь

    С нами с:
    26 сен 2011
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Хабаровск
    @artoodetoo, как о чём? О топикстартере.
    Удалить елемент массива по значению.
    Причём, удаляется любое количество вхождений.
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Нет. Проблема в вашем улучшении вопроса.
     
  8. Юрий Удовиченко

    Юрий Удовиченко Активный пользователь

    С нами с:
    26 сен 2011
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Хабаровск
  9. IAAWY

    IAAWY Новичок

    С нами с:
    28 июн 2021
    Сообщения:
    17
    Симпатии:
    3
    array_flip($array);
    В конце!
     
  10. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Ну, в копилку нестандартных решений.
    Если массив упакован в строку, например в json, то можно использовать preg_replace()