3v4l.org

run code in 300+ PHP versions simultaneously
<?php $items = [ 'total' => '5', '_embedded' => [ 'articles' => function() { yield "Article 1"; } ], 'more' => [ 'nested' => [ 'news' => function() { yield "Article 2"; } ], ], ]; $generators = []; $count = 0; array_walk_recursive($items, function (&$item, $key) use (&$count, &$generators) { if (is_callable($item)) { $placeholder = '__placeholder_' . $count . '__'; $generators[$placeholder] = $item; $item = $placeholder; ++$count; } }); var_dump($items); var_dump($generators);

preferences:
25.68 ms | 406 KiB | 5 Q