3v4l.org

run code in 300+ PHP versions simultaneously
<?php global $array; $array = [ '0' => [ 'id' => 1, 'parent' => 0, 'name' => 'root 0' ], '1' => [ 'id' => 2, 'parent' => 1, 'name' => 'root 1' ], '2' => [ 'id' => 3, 'parent' => 2, // this should have after parse parent 1 'name' => 'root 2' ], '3' => [ 'id' => 4, 'parent' => 3, // this should have after parse parent 1 'name' => 'root 3' ], '4' => [ 'id' => 5, 'parent' => 3, // this should have after parse parent 1 'name' => 'root 4' ], '5' => [ 'id' => 6, 'parent' => 2, // this should have after parse parent 1 'name' => 'root 2' ] ]; global $new_array; $new_array = []; foreach( $array as $item ) { if( $item['parent'] == 0 ) { $new_array[] = $item; // if parent 0 - clone into new array continue; } //echo $item['name'] . PHP_EOL; $temp = check_parent( $item['parent'] ); // get child $item['parent'] = $temp['id']; $new_array[] = $item; } echo '<pre>'; print_r($new_array); function check_parent( $parent ) { //echo '- check for parent of ' . $parent . PHP_EOL; global $array; foreach( $array as $item ) { if( $item['id'] == $parent && $item['parent'] == 0 ) { //echo '[OK] found root parent id: ' . $item['id'] . PHP_EOL; $item['parent'] = $item['id']; return $item; } else { return check_parent( $item['id'] ); } } }
Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 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
<pre>Array ( [0] => Array ( [id] => 1 [parent] => 0 [name] => root 0 ) [1] => Array ( [id] => 2 [parent] => 1 [name] => root 1 ) [2] => Array ( [id] => 3 [parent] => 1 [name] => root 2 ) [3] => Array ( [id] => 4 [parent] => 1 [name] => root 3 ) [4] => Array ( [id] => 5 [parent] => 1 [name] => root 4 ) [5] => Array ( [id] => 6 [parent] => 1 [name] => root 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 <pre>Array ( [0] => Array ( [id] => 1 [parent] => 0 [name] => root 0 ) [1] => Array ( [id] => 2 [parent] => 1 [name] => root 1 ) [2] => Array ( [id] => 3 [parent] => 1 [name] => root 2 ) [3] => Array ( [id] => 4 [parent] => 1 [name] => root 3 ) [4] => Array ( [id] => 5 [parent] => 1 [name] => root 4 ) [5] => Array ( [id] => 6 [parent] => 1 [name] => root 2 ) )

preferences:
225.84 ms | 403 KiB | 227 Q