3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types=1); function iterateWithPath(array $input, array $path = []): iterable { foreach ($input as $key => $value) { $pathToHere = [...$path, $key]; is_iterable($value) ? yield from iterateWithPath($value, $pathToHere) : yield $pathToHere => $value; } } function filterIterable(iterable $it, callable $filter): iterable { foreach ($it as $key => $value) { if ($filter($value, $key)) { yield $key => $value; } } } $input = [ 'steve' => [ 'id' => [ '#text' => 1, ], ], 'albert' => [ 'id' => [ '#text' => 2, ], ], 'john' => [ 'profil' => [ 'id' => [ '#text' => 3, ], ], ], ]; $it = filterIterable(iterateWithPath($input), static function ($current, array $path): bool { return ['id', '#text'] === array_slice($path, -2) && 2 === $current; }); foreach ($it as $path => $val) { print_r([ 'path' => $path, 'val' => $val ]); }
Output for 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.4, 8.3.6 - 8.3.7
Array ( [path] => Array ( [0] => albert [1] => id [2] => #text ) [val] => 2 )
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Array ( [path] => Array ( [0] => albert [1] => id [2] => #text ) [val] => 2 )
Output for 7.2.33, 7.3.0 - 7.3.33
Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /in/0bj9M on line 6
Process exited with code 255.

preferences:
115.45 ms | 402 KiB | 150 Q