За последние 24 часа нас посетили 22173 программиста и 1140 роботов. Сейчас ищут 658 программистов ...

Array_walk удалить элемент массива

Тема в разделе "PHP для новичков", создана пользователем zer0day, 20 апр 2020.

Метки:
  1. zer0day

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

    С нами с:
    15 ноя 2019
    Сообщения:
    19
    Симпатии:
    0
    Что-то не могу понять, или я ошибаюсь, или это нереально в этой функции.

    Есть массив, в котором нужно обработать элементы, и удалить некоторые.
    PHP:
    1. $raw_arr =  ['php','perl','python ', ''];
    2. array_walk($raw_arr,function(&$v,$k) {
    3.     $v = trim($v);  
    4. if (strlen($v) < 2 - удалить элемент, не работает
    5.     });
    Как удалить пустой элемент? Пробовал и unset($k), unset($raw_arr[$k]) , все равно остается эта пустая строка. В плане - без вызова еще 1 функции или перебора через foreach.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.750
    Симпатии:
    1.322
    Адрес:
    Лень
  3. iceblood

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

    С нами с:
    20 фев 2020
    Сообщения:
    83
    Симпатии:
    12
    PHP:
    1.     $old_array =  ['php','perl','python ', ''];
    2.     $new_array = array_diff($old_array, array(''));
    3.     print_r($new_array);
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @zer0day, можно применить array_filter()
    PHP:
    1. $raw_arr = array_filter($raw_arr, function(&$v) {
    2.     $v = trim($v);
    3.     if (strlen($v) < 2) { // - удалить элемент, не работает
    4.         return false;
    5.     }
    6.     return true;
    7. });
     
  5. iceblood

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

    С нами с:
    20 фев 2020
    Сообщения:
    83
    Симпатии:
    12
    Прошелся отладчиком - работает. Значит можно ) . Кода = больше, но если для души - покурив анаши... )) Дерзай.
     
    #5 iceblood, 13 май 2020
    Последнее редактирование: 13 май 2020