PHP перебор массива

Стандартная функция для 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'
             ]
           ]
];

Видите последний элемент массива отличается от [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);
    }
  }
}

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

Рейтинг
( Пока оценок нет )
Загрузка ...