<?php
$all_cats = [
[
'id' => 7,
'parent_id' => 6,
'name' => 'Category 7 level 4'
],
[
'id' => 0,
'parent_id' => -1,
'name' => 'Category 0 level 0'
],
[
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1 level 1'
],
[
'id' => 2,
'parent_id' => 0,
'name' => 'Category 2 level 1'
],
[
'id' => 3,
'parent_id' => 0,
'name' => 'Category 3 level 1'
],
[
'id' => 4,
'parent_id' => 2,
'name' => 'Category 4 level 2'
],
[
'id' => 5,
'parent_id' => 2,
'name' => 'Category 5 level 2'
],
[
'id' => 6,
'parent_id' => 5,
'name' => 'Category 5 level 3'
],
];
function get_cat_recursive($id_check, $array_check, $array_temp, $use_merge)
{
foreach ($array_check as $key => $value) {
if ( $id_check == $value['parent_id']) {
$new_array = get_cat_recursive($value['id'], $array_check, $array_temp, $use_merge);
if ($use_merge) {
} else {
$array_temp += $new_array;
}
}
}
return $array_temp;
}
echo "With plus:\n";
$result = get_cat_recursive(2, $all_cats, [], false);
echo "\n\nWith array_merge:\n";
$result = get_cat_recursive(2, $all_cats, [], true);
PD9waHAKCgokYWxsX2NhdHMgPSBbCglbCgkJJ2lkJyA9PiA3LAoJCSdwYXJlbnRfaWQnID0+IDYsCgkJJ25hbWUnID0+ICdDYXRlZ29yeSA3IGxldmVsIDQnCgldLAoJWwoJCSdpZCcgPT4gMCwKCQkncGFyZW50X2lkJyA9PiAtMSwKCQknbmFtZScgPT4gJ0NhdGVnb3J5IDAgbGV2ZWwgMCcKCV0sCglbCgkJJ2lkJyA9PiAxLAoJCSdwYXJlbnRfaWQnID0+IDAsCgkJJ25hbWUnID0+ICdDYXRlZ29yeSAxIGxldmVsIDEnCgldLAoJWwoJCSdpZCcgPT4gMiwKCQkncGFyZW50X2lkJyA9PiAwLAoJCSduYW1lJyA9PiAnQ2F0ZWdvcnkgMiBsZXZlbCAxJwoJXSwKCVsKCQknaWQnID0+IDMsCgkJJ3BhcmVudF9pZCcgPT4gMCwKCQknbmFtZScgPT4gJ0NhdGVnb3J5IDMgbGV2ZWwgMScKCV0sCglbCgkJJ2lkJyA9PiA0LAoJCSdwYXJlbnRfaWQnID0+IDIsCgkJJ25hbWUnID0+ICdDYXRlZ29yeSA0IGxldmVsIDInCgldLAoJWwoJCSdpZCcgPT4gNSwKCQkncGFyZW50X2lkJyA9PiAyLAoJCSduYW1lJyA9PiAnQ2F0ZWdvcnkgNSBsZXZlbCAyJwoJXSwKCVsKCQknaWQnID0+IDYsCgkJJ3BhcmVudF9pZCcgPT4gNSwKCQknbmFtZScgPT4gJ0NhdGVnb3J5IDUgbGV2ZWwgMycKCV0sCl07CgoKCmZ1bmN0aW9uIGdldF9jYXRfcmVjdXJzaXZlKCRpZF9jaGVjaywgJGFycmF5X2NoZWNrLCAkYXJyYXlfdGVtcCwgJHVzZV9tZXJnZSkKewoKICBmb3JlYWNoICgkYXJyYXlfY2hlY2sgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgIAogICAgaWYgKCAkaWRfY2hlY2sgPT0gJHZhbHVlWydwYXJlbnRfaWQnXSkgewoKICAgICAgYXJyYXlfcHVzaCgkYXJyYXlfdGVtcCwgJHZhbHVlWydpZCddKTsKICAgICAgJG5ld19hcnJheSA9IGdldF9jYXRfcmVjdXJzaXZlKCR2YWx1ZVsnaWQnXSwgJGFycmF5X2NoZWNrLCAkYXJyYXlfdGVtcCwgJHVzZV9tZXJnZSk7CiAgICAgIGlmICgkdXNlX21lcmdlKSB7CgkJICAkYXJyYXlfdGVtcCA9IGFycmF5X21lcmdlKCRhcnJheV90ZW1wLCAkbmV3X2FycmF5KTsKCSAgfSBlbHNlIHsKCQkgICRhcnJheV90ZW1wICs9ICRuZXdfYXJyYXk7CgkgIH0KCiAgICB9CgogIH0KICByZXR1cm4gJGFycmF5X3RlbXA7Cgp9CgoKZWNobyAiV2l0aCBwbHVzOlxuIjsKJHJlc3VsdCA9IGdldF9jYXRfcmVjdXJzaXZlKDIsICRhbGxfY2F0cywgW10sIGZhbHNlKTsKcHJpbnRfcigkcmVzdWx0KTsKCmVjaG8gIlxuXG5XaXRoIGFycmF5X21lcmdlOlxuIjsKJHJlc3VsdCA9IGdldF9jYXRfcmVjdXJzaXZlKDIsICRhbGxfY2F0cywgW10sIHRydWUpOwpwcmludF9yKCRyZXN1bHQpOwo=