<?php
// Немного рекурсивной магии
1, 2,
6,
10
);
// Итератор по массиву, он может в рекурсию но не делает ее по умолчанию
$iter = new RecursiveArrayIterator($array);
// Итератор, заставляющий предыдущий делать рекурсию
$recursiveIter = new RecursiveIteratorIterator($iter);
// Провеим работает ли
foreach ($recursiveIter as $item) {
echo $item." ";
}
// Сколько элементов в массиве?
echo "| $count items\n";
// Ок, теперь посчитаем сумму всех элементов итератором:
$sum = 0;
iterator_apply($recursiveIter, function () use (&$sum, $recursiveIter) { // значение само не передается
return true;
});
echo "Sum = $sum\n";
// Делаем плоский массив из рекурсивного
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7CgovLyDQndC10LzQvdC+0LPQviDRgNC10LrRg9GA0YHQuNCy0L3QvtC5INC80LDQs9C40LgKJGFycmF5ID0gYXJyYXkoCiAgICAxLCAyLAogICAgYXJyYXkoMywgNCwgNSksCiAgICA2LAogICAgYXJyYXkoYXJyYXkoYXJyYXkoNywgOCksIDkpKSwKICAgIDEwCik7CgovLyDQmNGC0LXRgNCw0YLQvtGAINC/0L4g0LzQsNGB0YHQuNCy0YMsINC+0L0g0LzQvtC20LXRgiDQsiDRgNC10LrRg9GA0YHQuNGOINC90L4g0L3QtSDQtNC10LvQsNC10YIg0LXQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjgokaXRlciA9IG5ldyBSZWN1cnNpdmVBcnJheUl0ZXJhdG9yKCRhcnJheSk7CgovLyDQmNGC0LXRgNCw0YLQvtGALCDQt9Cw0YHRgtCw0LLQu9GP0Y7RidC40Lkg0L/RgNC10LTRi9C00YPRidC40Lkg0LTQtdC70LDRgtGMINGA0LXQutGD0YDRgdC40Y4KJHJlY3Vyc2l2ZUl0ZXIgPSBuZXcgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcigkaXRlcik7CgovLyDQn9GA0L7QstC10LjQvCDRgNCw0LHQvtGC0LDQtdGCINC70LgKZm9yZWFjaCAoJHJlY3Vyc2l2ZUl0ZXIgYXMgJGl0ZW0pIHsKICAgIGVjaG8gJGl0ZW0uIiAgIjsgICAgCn0KCi8vINCh0LrQvtC70YzQutC+INGN0LvQtdC80LXQvdGC0L7QsiDQsiDQvNCw0YHRgdC40LLQtT8KJGNvdW50ID0gaXRlcmF0b3JfY291bnQoJHJlY3Vyc2l2ZUl0ZXIpOwplY2hvICJ8ICRjb3VudCBpdGVtc1xuIjsKCi8vINCe0LosINGC0LXQv9C10YDRjCDQv9C+0YHRh9C40YLQsNC10Lwg0YHRg9C80LzRgyDQstGB0LXRhSDRjdC70LXQvNC10L3RgtC+0LIg0LjRgtC10YDQsNGC0L7RgNC+0Lw6IAokc3VtID0gMDsKaXRlcmF0b3JfYXBwbHkoJHJlY3Vyc2l2ZUl0ZXIsIGZ1bmN0aW9uICgpIHVzZSAoJiRzdW0sICRyZWN1cnNpdmVJdGVyKSB7CiAgICAvLyDQt9C90LDRh9C10L3QuNC1INGB0LDQvNC+INC90LUg0L/QtdGA0LXQtNCw0LXRgtGB0Y8KICAgICRzdW0gKz0gJHJlY3Vyc2l2ZUl0ZXItPmN1cnJlbnQoKTsKICAgIHJldHVybiB0cnVlOwp9KTsKCmVjaG8gIlN1bSA9ICRzdW1cbiI7CgovLyDQlNC10LvQsNC10Lwg0L/Qu9C+0YHQutC40Lkg0LzQsNGB0YHQuNCyINC40Lcg0YDQtdC60YPRgNGB0LjQstC90L7Qs9C+CiRhcnJheSA9IGl0ZXJhdG9yX3RvX2FycmF5KCRyZWN1cnNpdmVJdGVyLCBmYWxzZSk7CnZhcl9kdW1wKGltcGxvZGUoJywgJywgJGFycmF5KSk7Cgo=
1 2 3 4 5 6 7 8 9 10 | 10 items
Sum = 55
string(29) "1, 2, 3, 4, 5, 6, 7, 8, 9, 10"