За последние 24 часа нас посетили 23911 программистов и 1641 робот. Сейчас ищут 860 программистов ...

оператор for в массиве почему не срабатывает

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

  1. Рихард

    Рихард Новичок

    С нами с:
    13 янв 2018
    Сообщения:
    89
    Симпатии:
    6
    Ребята подскажите почему с помощью оператора for не выводится многомерный массив ,хотя оператором foreach выводится.

    PHP:
    1.    $avto =[
    2.     ['vesta','gazel'],
    3.     ['e60','A8']
    4.     ];
    5.     for($i=0,$num=count($avto);$i<$num;$i++)
    6.     {
    7.         for($m=0,$man=count($avto[$i]);$m<$man;$m++)
    8.         {print $avto[$i][$m];}
    9.     };


    А вот тут другой многомерный массив выводится

    PHP:
    1. $avto = array(
    2.         'russian'=>array('lada'=>'vesta',
    3.                          'gaz'=>'gazel'),
    4.         'germanian'=>array('bmw'=>'e60',
    5.                            'audi'=>'A8')
    6.     );
    7.     foreach($avto as $country=>$model)
    8.     {
    9.         foreach($model as $name=>$machine)
    10.         { print "Машины $country это: $machine<br>";}
    11.     }
     
    #1 Рихард, 3 фев 2018
    Последнее редактирование модератором: 3 фев 2018
  2. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Выкинь это из параметров цикла за цикл!
    --- Добавлено ---
    И оформи свой код правильно!
    PHP:
    1. <?php
    2. $arr = Array('dev', 'boom', 'loop', 'great', 'grand');
    3. $number = count($arr);
    4. for($i=0;$i<=$number;$i++)
    5. {
    6.    print $arr[$i];
    7. }
     
  3. Рихард

    Рихард Новичок

    С нами с:
    13 янв 2018
    Сообщения:
    89
    Симпатии:
    6
    в одномерном массиве как у тебя у меня получается использовать for и foreach, в многомерных получается foreach запускать ,но for не получается
     
  4. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    PHP:
    1. $data =[
    2. ['vesta','gazel'],
    3. ['e60','A8']
    4. ];
    5.  
    6. //Вариант For
    7.  
    8. for($i=0;$i<count($data);$i++) {
    9.   for($j=0;$j<count($data[$i]);$j++) {
    10.     echo $data[$i][$j];
    11.   }
    12. }
    13.  
    14. //Еще вариант в копилку для тебя
    15.  
    16. foreach(new RecursiveIteratorIterator(
    17.         new RecursiveArrayIterator($data)) as $v) {
    18.     echo $v;
    19. }
     
    Рихард нравится это.
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    У меня всё отрабатывает! Проверил
    PHP:
    1. $arr = [
    2.         ['nginx', 'php', 'mysql'],
    3.         ['1.11', '7.1', '5.7']
    4.     ];
    5.     $countArray = count($arr);
    6.     for($i=0;$i<$countArray;$i++){
    7.         $countArrayInArray = count($arr[$i]);
    8.         for($d=0;$d<$countArrayInArray;$d++) {
    9.             echo $arr[$i][$d].'<br/>____<br/>';
    10.         }
    11.  
    12.     }
    --- Добавлено ---
    не надо так делать, потом что он каждую итерацию будет вызывать функцию count... Как то не производительно!
     
    Рихард нравится это.
  6. Рихард

    Рихард Новичок

    С нами с:
    13 янв 2018
    Сообщения:
    89
    Симпатии:
    6
    Твой вариант сработал,но проще как я понял лучше foreach