3v4l.org

run code in 300+ PHP versions simultaneously
<?php $myArray = array( "a", array( "a", "b", array( "a", "b", "c", array( "a", "b", "c", "d", array("the end") ) ) ) ); $recursive_array_iterator = new RecursiveArrayIterator(&$myArray); iterator_apply(&$recursive_array_iterator, 'traverseRecursiveArray', array(&$recursive_array_iterator)); function traverseRecursiveArray($iterator) { while ($iterator->valid()) { if ($iterator->hasChildren()) { traverseRecursiveArray($iterator->getChildren()); } else { $iterator->offsetSet($iterator->key(), manipulate($iterator->current())); echo $iterator->key() . ' => ' . $iterator->current() . PHP_EOL; } $iterator->next(); } } function manipulate($string) { $string .= " appended"; return $string; } var_dump($myArray);
Output for 5.4.0 - 5.4.31
Fatal error: Call-time pass-by-reference has been removed in /in/E4irL on line 23
Process exited with code 255.
Output for 5.3.0 - 5.3.29
Deprecated: Call-time pass-by-reference has been deprecated in /in/E4irL on line 23 Deprecated: Call-time pass-by-reference has been deprecated in /in/E4irL on line 24 0 => a appended 0 => a appended 1 => b appended 0 => a appended 1 => b appended 2 => c appended 0 => a appended 1 => b appended 2 => c appended 3 => d appended 0 => the end appended array(2) { [0]=> string(10) "a appended" [1]=> array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> array(5) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" [4]=> array(1) { [0]=> string(7) "the end" } } } } }

preferences:
177.05 ms | 1396 KiB | 69 Q