За последние 24 часа нас посетил 70321 программист и 5687 роботов. Сейчас ищут 1167 программистов ...

Как в php вывести числа из массива в обратном порядке.

Тема в разделе "PHP для новичков", создана пользователем south, 25 окт 2022.

  1. south

    south Новичок

    С нами с:
    25 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    Доброго времени суток уважаемые форумчане! Попытался отобразить только нечётные числа из массива, вроде вышло. Теперь пытаюсь ниже отобразить их-же, но в обратном порядке, не получается. Подскажите как сделать?
    PHP:
    1. <?php
    2. function fun(...$a) {
    3.         foreach($a as $b){
    4.             if($b % 2 != 0) {
    5.                 echo $b. " ";
    6.             }
    7.         }
    8.     }
    9.     fun(0,1,8,3,4,7,6,7,8,9,8,5,6,4);
    10. ?>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    еще можно через array_filter сделать

    PHP:
    1. array_filter($array, function($item) {
    2.     return $item % 2 != 0;
    3. });
     
  3. south

    south Новичок

    С нами с:
    25 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    Что-то не работает. Это вместо foreach?
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    а подумать?
     
  5. south

    south Новичок

    С нами с:
    25 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    Было бы чем думать ) :) Вот в таком виде всё сработало:
    PHP:
    1. <?php
    2. $array = [0,1,2,3,4,5,6,7,8,9];
    3.     echo "Нечетные :\n";
    4.     print_r(array_filter($array, function($item) {
    5.         return $item % 2 != 0;
    6.     }));
    7. ?>
    А как его заставить отображать в обратном порядке, отзеркалить?
     
  6. south

    south Новичок

    С нами с:
    25 окт 2022
    Сообщения:
    13
    Симпатии:
    0
    Вроде заставил:
    PHP:
    1. <?php
    2. $array = [0,1,2,3,4,5,6,7,8,9];
    3.    
    4.     echo "Нечетные :\n <br>";
    5.     print_r(array_filter($array, function($item) {
    6.         return $item % 2 != 0;
    7.     }));
    8.  
    9.     $reversed = array_reverse($array);
    10.    
    11.     echo "<br> В обратном порядке :\n <br>";
    12.     print_r(array_filter($reversed, function($item) {
    13.         return $item % 2 != 0;
    14.     }));
    15. ?>
    Теперь отображает нечётные числа из массива по порядку и в обратном порядке, но громоздко получилось. Может подскажете как сделать компактнее?
    --- Добавлено ---
    Вроде заставил:
    PHP:
    1. <?php
    2. $array = [0,1,2,3,4,5,6,7,8,9];
    3.    
    4.     echo "Нечетные :\n <br>";
    5.     print_r(array_filter($array, function($item) {
    6.         return $item % 2 != 0;
    7.     }));
    8.  
    9.     $reversed = array_reverse($array);
    10.    
    11.     echo "<br> В обратном порядке :\n <br>";
    12.     print_r(array_filter($reversed, function($item) {
    13.         return $item % 2 != 0;
    14.     }));
    15. ?>
    Теперь отображает нечётные числа из массива по порядку и в обратном порядке, но громоздко получилось. Может подскажете как сделать компактнее?
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    Зачем второй раз фильтр применять то? Просто один раз получили массив, если нужно переверните его и все
     
  8. kadet166

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

    С нами с:
    15 мар 2022
    Сообщения:
    15
    Симпатии:
    5
    Как вариант
    Код (Text):
    1. function odd($var)
    2. {
    3.     return $var & 1;
    4. }
    5. $arr = [0,1,2,3,4,5,6,7,8,9];
    6.     echo "Нечетные:\n";
    7.     print_r(array_filter($arr, "odd"));
    8.     echo "В обратном порядке:\n";
    9.     print_r(array_reverse(array_filter($arr, "odd")));
     
    #8 kadet166, 26 окт 2022
    Последнее редактирование: 26 окт 2022
    south нравится это.