За последние 24 часа нас посетили 34130 программистов и 1319 роботов. Сейчас ищет 1041 программист ...

Перебор массивов

Тема в разделе "PHP для новичков", создана пользователем Danil005, 3 окт 2017.

  1. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Как сделать перебор 3х массивов одновременно и вывести их только один раз:
    PHP:
    1.  foreach ($array['names'] as $nameVal) {
    2.                
    3.                           foreach ($array['km'] as $kmVal) {
    4.                               foreach ($array['timeStop'] as $tsVal) {
    5.  
    6.                                   echo $kmVal.'-'.$nameVal.'-'.$tsVal.'<br>';
    7.                               }
    8.                           }
    9.                       }
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    PHP:
    1. <?php
    2.  
    3. error_reporting ( E_ALL );
    4.  
    5. echo implode ( '<br>', array_map ( function ( ...$args )
    6. {
    7.     return implode ( '-', $args );
    8. },
    9. $array['names'], $array['km'], $array['timeStop'] ) );
     
    Danil005 нравится это.
  3. PhpStorm

    PhpStorm Новичок

    С нами с:
    21 сен 2017
    Сообщения:
    65
    Симпатии:
    11
    Адрес:
    JetBrains
    Никак, потому что $array['names'], $array['km'] и $array['timeStop] не являются массивами.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    конечно не является. у тебя же пропущен апостроф
    $array['timeStop]

    а так, лови
    PHP:
    1. [
    2.     'names' => [ 0,1,2,3 ],
    3.     'km' => [ 0,1,2,3 ],
    4.     'timeStop' => [ 0,1,2,3 ]
    5. ]
     
  5. PhpStorm

    PhpStorm Новичок

    С нами с:
    21 сен 2017
    Сообщения:
    65
    Симпатии:
    11
    Адрес:
    JetBrains
    В первом посте автора код, в котором $array['names'], $array['km'] и $array['timeStop'] не являются массивами, перебирать их foreach не получится.
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    на все 100% уверен ? или ванга шепчет с учеными о своих концов света в конце каждого года?
     
  7. PhpStorm

    PhpStorm Новичок

    С нами с:
    21 сен 2017
    Сообщения:
    65
    Симпатии:
    11
    Адрес:
    JetBrains
    В первом посте автора код, в котором $array['names'], $array['km'] и $array['timeStop'] не являются массивами, перебирать их foreach не получится.
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
  9. PhpStorm

    PhpStorm Новичок

    С нами с:
    21 сен 2017
    Сообщения:
    65
    Симпатии:
    11
    Адрес:
    JetBrains
    В первом посте автора код, в котором $array['names'], $array['km'] и $array['timeStop'] не являются массивами, перебирать их foreach не получится.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А откуда такая уверенность? Из контекста это не очевидно. Код дурацкий, конечно, со странной вложенностью, но то, что там не массивы - неизвестно. Мб и массивы, просто объявлены выше.
     
  11. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    @PhpStorm это массив, так как он приходит с POST запроса с <input name='km[]'>.
    Я кинул лишь часть примерного кода. Смысл людям засорять голову своим "говно" кодом...
     
    MouseZver нравится это.
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Ну обычно в форме количество связанных полей одинаково, поэтому...
    PHP:
    1. foreach ($array['names'] as $n => $name) {
    2.   echo $name, ' - ', $array['km'][$n], ' - ', $array['timeStop'][$n], '<br>';
    3. }
     
    Danil005 нравится это.
  13. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    @[vs]
    Что-то не подумал... Спасибо тоже за вариант.