За последние 24 часа нас посетили 17929 программистов и 1591 робот. Сейчас ищут 1366 программистов ...

ключи в foreach

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

  1. Izooomrud

    Izooomrud Новичок

    С нами с:
    15 янв 2018
    Сообщения:
    10
    Симпатии:
    0
    Привет, пытаюсь указать в foreach ключ массива ['a'], но выдаёт ошибку Invalid argument supplied for foreach(), почему ведь массив есть?

    Код (Text):
    1. <?php
    2.  
    3. $m = array('Rex' => array('Ex' => array(
    4. 'a' => array('c' => 3, 'd' => 4),
    5. 'b' => array('e' => 5, 'f' => 6), 'g' => '7'
    6. )));
    7.  
    8. foreach ($m as $key => $value)
    9. {foreach ($value['a'] as $k => $v){print_r($v);}}
    10.  
    11. ?>
     
  2. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    @Izooomrud
    PHP:
    1. <?php
    2. $m =
    3. ['rex' => [
    4.     'ex' => [
    5.         'a' => [
    6.             'c' => 3,
    7.             'd' => 4,
    8.             ],
    9.         'b' => [
    10.             'e' => 5,
    11.             'f' => 6,
    12.             ],
    13.         'g' => '7',
    14.         ]
    15.     ]
    16. ];
    17. foreach ($m as $key => $value) { //находит массив rex
    18.     foreach ($value as $key_2 => $value_2) { //находит массив ex
    19.         foreach ($value_2['a'] as $k => $v){ //перебирает массив a
    20.             print_r($v);
    21.         }
    22.     }
    23. }
    24. ?>
    --- Добавлено ---
    А можно так:
    PHP:
    1. <?php
    2. $m =
    3. ['rex' => [
    4.     'ex' => [
    5.         'a' => [
    6.             'c' => 3,
    7.             'd' => 4,
    8.             ],
    9.         'b' => [
    10.             'e' => 5,
    11.             'f' => 6,
    12.             ],
    13.         'g' => '7',
    14.         ]
    15.     ]
    16. ];
    17. foreach ($m['rex']['ex']['a'] as $key => $value) {
    18.     print_r($value);
    19. }
    20. ?>
     
  3. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    сделай
    PHP:
    1. print_r($value)
    и увидишь в чем проблема
    а вобще вот

    PHP:
    1. $m = array('Rex' => array('Ex' => array(
    2.         'a' => array('c' => 3, 'd' => 4),
    3.         'b' => array('e' => 5, 'f' => 6), 'g' => '7'
    4.         )));
    5.  
    6.         foreach ($m as $key => $value){
    7.             foreach ($value['Ex']['a'] as $k => $v){
    8.                 print_r($v);
    9.             }
    10.         }
    Суть в том что ты проходишь по массиву rex а не ex и поэтому у тебя ошибка.
     
    Izooomrud нравится это.
  4. Izooomrud

    Izooomrud Новичок

    С нами с:
    15 янв 2018
    Сообщения:
    10
    Симпатии:
    0
    сложно поначалу понять логику работы цикла в многомерном массиве