За последние 24 часа нас посетили 75016 программистов и 6787 роботов. Сейчас ищут 2518 программистов ...

Массив

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

  1. Rememberme

    Rememberme Новичок

    С нами с:
    24 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Всем привет!
    $arr = [[11,45,16,20],[74,88,12],[55,66,11,99,100]]; есть вот такой массив.Задание следующее:
    Нужно вывести максимальные значения из каждого массива в новый массив.
    То есть должно получиться $result=[45,88,100];
    PHP:
    1. $arr = [[11,45,16,20],[74,88,12],[55,66,11,99,100]];
    2. $result=[];
    3. $count= count($arr);
    4. $max=0;
    5. for($i=0;$i<$count;$i++){
    6.     for($q=0;$q<count($arr[$i]);$q++){
    7.         if($max<$arr[$i][$q]){
    8.            $max=$arr[$i][$q];
    9.         }
    10.         elseif($max>$arr[$i][$q]){
    11.             echo $max<$arr[$i][$q];
    12.         }
    13.     }echo $result[]=$max . ' ';
    14. }
    написал вот так,выводит максимальные значения,но только потому,что они идут по нарастающей.То есть если мы во втором массиве вместо 88 поставим 888,то в результате он задублирует и получиться $result=[45,888,888];
    Помогите с решением пожалуйста.Что делаю не так и если не сложно обьясните пожалуйста...
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    1. переделай на foreach

    потому что не надо выводить ничего, пока ты не закончил проходить по всему массиву. ведь там ещё могут быть числа больше.

    переделай на foreach и посмотри, нет ли в php уже готовой функции для поиска максимального. вдруг есть. тогда цикл станет простым и удобным.
     
  3. Rememberme

    Rememberme Новичок

    С нами с:
    24 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Та в том то и дело,что только for можно мне использовать)
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    ну тогда засунь в переменную максимум. а только потом печатай.
     
  5. Emilien

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

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    PHP:
    1. $arr = [[11,45,16,20],[74,88,12],[55,66,11,99,100]];
    2. $result = array_map('max', $arr);
     
  6. Rememberme

    Rememberme Новичок

    С нами с:
    24 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Это как сделать?Не совсем понял...
     
  7. Rememberme

    Rememberme Новичок

    С нами с:
    24 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Нужно найти решение используя только функцию for
    Ну и там if и else
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.971
    Симпатии:
    753
    $max = 0; засунь в первый цикл
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    сделай как я сказал, остальное у тебя уже есть готовое.
     
  10. Rememberme

    Rememberme Новичок

    С нами с:
    24 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Спасибо,так работает все.А можешь обьяснить,почему до этого не работало?
     
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.971
    Симпатии:
    753
    Пройдись мысленно по алгоритму в первом посте.
    for - это цикл. В скобках параметры цикла, а в фигурных скобках - тело цикла. После того, как внутренний цикл отрабатывает - переменная $max со старым значением попадает в следующую итерацию внешнего цикла, т е в следующий внутренний цикл.