За последние 24 часа нас посетили 41064 программиста и 1815 роботов. Сейчас ищут 842 программиста ...

Как заменить в PHP выражение like?

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

  1. Delphin911

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

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Не бейте сильно народ! Подскажите. Нужно мне выбрать из массива, содержащего значения томов nbgf vol12, vol14, vol22, vol225, только те, что начинаются с vol2. ну т.е. vol = "vol2*" или vol like "vol2*". Как это сделать в PHP. Чета уже голова сломалась сколько всего перечитал и не нашел!
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    array_filter()
     
  3. Delphin911

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

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Может я чаво не допонял, но внутри array_filter есть функция, которая должна проверять какое-то условие. Так и как мне написать эту функцию, что бы из массива
    Код (PHP):
    1. $myarray("vol117", "vol22", "vol228", "vol17") 
    отобрались только начинающиеся на vol2...?
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    вариантов достаточно
    -можно вырезать вручную четыре начальных символа слова и сравнивать их с 'vol2'
    -можно проверять регулярным выражением, типа /^vol2/i

    Добавлено спустя 1 минуту 36 секунд:
    можно и без array_filter()/ просто пеербираем массив с помощью foreach(){}
    внутри проверяем каждый элемент. если нам подходит - то копируем значение в новый массив.
    в итоге будет новый массив только с теми элементами которые нам нужны

    Добавлено спустя 8 минут 30 секунд:
    Код (PHP):
    1. $vol2_array = array_filter($myarray, function($v) { return substr($v,0,4)=='vol2'; } ); 
     
  5. Delphin911

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

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Спасибо! Типа /^vol2/i так почему-то и не заработало. А вот вариант с substr($v,0,4) очень даже сработал. Еще раз спасибо.
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Для варианта с регуляркой, надо было использовать функцию preg_grep
    Код (PHP):
    1. preg_grep("/^vol2/i", $myarray); 
     
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    там хватит preg_match()
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    что-то мне кажется, что человек только что получил два отличных костыля для своего кода.
     
  9. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    кстати да.
    Delphin911, почему бы не отфильтровать данные ранее, еще на стадии запроса в БД. чтоб лишние данные в результат даже не попадали.
    откуда этот твой массив вообще берется?