За последние 24 часа нас посетили 20309 программистов и 1009 роботов. Сейчас ищут 356 программистов ...

Выбрать из массива чисел диапазон

Тема в разделе "PHP для новичков", создана пользователем mailmoney, 24 июл 2021.

  1. mailmoney

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

    С нами с:
    31 мар 2011
    Сообщения:
    18
    Симпатии:
    0
    Здравствуйте.
    --
    Я немного затупил, есть массив:
    Код (Text):
    1. $arr=array(1.5, 2.3,6,5,1.1,10);
    нужно выбрать значения между 2 и 6 допустим. Сначала массив сортируем, а вот дальше...
     
  2. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Отсортировать можно потом.
    Создайте новый массив, а из старого, в цикле, извлеките в новый только то, что подходит под условие
    PHP:
    1. foreach($arr as $value)
    2. {
    3. if($value > 2 && $value < 6)
    4. $new_arr[] = $value;
    5. }
     
  3. mailmoney

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

    С нами с:
    31 мар 2011
    Сообщения:
    18
    Симпатии:
    0
    точно, спасибо! нужно больше спать
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    array_filter()
     
    don.bidon нравится это.
  5. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Если массив очень большой и каждая миллисекунда на счету.
    Ну, или показать, что вовлечен
     
  6. artoodetoo

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

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

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Замеряли.
    Был в твоем амплуа.
    Процентов пять вроде выигрыш.
    Правда версия тогда то ли 5.1, то ли 5.2 была
     
  8. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Нет брат, в моём амплуа ты врядли был.

    Использование array_filter и других подобных даёт минимальный оверхед за счет необходимости вызова callback. Да он имеет свою цену. Но относительная стоимость этой нагрузки будет падать по мере увеличения числа итераций и роста сложности вычислений внутри самого callback. Так что итоговый прирост времени может быть вообще незаметен. Читабельность кода и гибкость решений значат гораздо больше этой микро-экономии. Сейчас с появлением "стрелочных функций" код вообще может быть восхитительно прост:

    PHP:
    1. $dest = array_filter($source, fn($x) => $x > 2 && $x < 6);
     
    don.bidon нравится это.
  9. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Без комментариев
     
  10. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Ага. Но уже поздно. Вот лучше бы ты оставил без коментариев мой первый комент. )))
     
  11. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Да нет. В самый раз.
     
  12. nolispe

    nolispe Новичок

    С нами с:
    23 июн 2021
    Сообщения:
    39
    Симпатии:
    2
    Недавно наблюдал функцию, которая возвращает точное время числом, разделяя вывод функции microtime() по пробелу, а потом добавляя два числа. Это я к тому, что используйте стандартные решения.
     
  13. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Процитированное вами и есть стандартное решение. Все array_ функции вмещает.
     
  14. nolispe

    nolispe Новичок

    С нами с:
    23 июн 2021
    Сообщения:
    39
    Симпатии:
    2
    Это костыль. Не занимайтесь велосипедостроительством.
     
  15. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Прям, не знаю, что и сказать.