<?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