3v4l.org

run code in 300+ PHP versions simultaneously
<?php $arr = [ ['one' => 'once', 'two' => ['one' => 'twice', 'two' => 'twice', ['one' => 'thrice']], 'three' => 'once',] ]; $needle = 'one'; // the key we're looking for $result = pathFinder($arr, $needle); /** * function pathFinder() returns the path(s) to a key in an array. * * @param array $arr the subject array * @param string $needle the key we're looking for * * @return array the paths leading to the key we're looking for */ function pathFinder(array $arr = [], $needle = ''): array { static $path = ''; static $paths = []; foreach ($arr as $key => $value) { if (is_array($value)) { $path .= $key . "->"; pathFinder($value, $needle); } else { if ($key === $needle) { $paths[] = $path . $key; // store path } } } return $paths; // return all found paths to key $needle } echo '<pre>'; print_r($result); echo '</pre>';
Output for git.master, git.master_jit, rfc.property-hooks
<pre>Array ( [0] => 0->one [1] => 0->two->one [2] => 0->two->0->one ) </pre>

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
114.52 ms | 405 KiB | 5 Q