PHP перебор массива — PHP шаг за шагом

php-massive-5052507Стандартная функция для php  перебор массива. Массив в задаче ассоциативный. В общем стандартная задача по нахождению элементов в массиве методом перебора. Трюк в том, что при обходе очередного уровня массива задать «человеческое название ключу» — в примере вложенность выше чем два, но мне кажется для понимания сути хватит и этой.

Задача.

В процессе выполнения кода образуется массив с данными, которые очевидно приходят из базы данных либо о клиентах, либо о пользователях сайта. Посмотрите код ниже:

# code… $big_array = [ [ 0=>[ name => ‘Muaz’, email => ‘tintin@gmail.com’, id => 29 ], 1=>[ name => ‘Himel’, email => ‘brochure@gmail.com’, id => 29 ], 2=>[ name => ‘Raj’, email => ‘tiasedntin@gmail.com’ ] ] ];

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# code…

$big_array = [ [ 0=>[

                name => ‘Muaz’,

                email => ‘tintin@gmail.com’,

                id => 29

             ],

             1=>[

                name => ‘Himel’,

                email => ‘brochure@gmail.com’,

                id => 29

             ],

            2=>[

                name => ‘Raj’,

                email => ‘tiasedntin@gmail.com’

             ]

           ]

];

Видите последний элемент массива отличается от [0] и [1] тем, что не содержит элемент [id]. Нужно добавить в него и похожие, если они встретятся этот элемент и присвоить ему случайное значение от 18 до 55.

Решение.

# code… foreach ($big_array as $key1 => $level1) { foreach ($level1 as $key2 => $level2) { if(!isset($level2[id])){ $big_array[$key1][$key2][id] = rand(18,55); } } }

# code…

foreach ($big_array as $key1 => $level1) {

  foreach ($level1 as $key2 => $level2) {

    if(!isset($level2[id])){

      $big_array[$key1][$key2][id] = rand(18,55);

    }

  }

}

Массивы вложены друг в друга, чтобы сделать последовательный перебор ассоциативных массивов. В php это делает функция foreach, подробнее о ней на php.net. Ключи $key1 и $key2 заданы, чтобы не запутаться — чем больше номер, тем глубже происходит перебор. На строке 4 происходит проверка существования в массиве [id], если он отсутствует — следующая строка присваивает случайное значение.

github-bb449e0ffbacbcb7f9c703db85b1cf0b-300x111-6894529