Стандартная функция для 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], если он отсутствует — следующая строка присваивает случайное значение.