Pull to refresh

Рекурсивный обход массива

Reading time1 min
Views19K
Original author: Nicolas Rajabaly & Antoine Ughetto
Наткнулся в интернете на интересный пост, описывающий использование SPL
Текст маленький, но уж сильно понравилась реализация.
Далее перевод (если его можно так назвать) + немного отсебятины

Когда у нас в программе появляется многоуровневый массив, то для того чтобы эффективно его обработать необходимо написать кучу рекурсивных функций или писать огромное количество циклов foreach, while или for (как кто привык)

Самый простой метод получения пар (ключ, значение) для таких массивов это использование возможностей библиотеки SPL, а именно итераторов RecursiveArrayIterator и RecursiveIteratorIterator

$array_multi = array(
    «myKey» => «myValue»,
    «myKey2»=> array(
        «myKey2Array» => «value2Array»,
        «myKey3Array» => «value3Array»,
        «myKey4Array» => «value4Array»,
        «myKey5Array» => array(«test», «tata», «france»)));
$array_iterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator($array_multi));
foreach($array_iterator as $key=>$value)
    echo $key.' — '.$value."\n";


Вывод этого коротенького примера следующий:
myKey — myValue
myKey2Array — value2Array
myKey3Array — value3Array
myKey4Array — value4Array
0 — test
1 — tata
2 — france
Tags:
Hubs:
Total votes 14: ↑7 and ↓70
Comments37

Articles