<?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']) {

      array_push($array_temp, $value['id']);
      $new_array = get_cat_recursive($value['id'], $array_check, $array_temp, $use_merge);
      if ($use_merge) {
		  $array_temp = array_merge($array_temp, $new_array);
	  } else {
		  $array_temp += $new_array;
	  }

    }

  }
  return $array_temp;

}


echo "With plus:\n";
$result = get_cat_recursive(2, $all_cats, [], false);
print_r($result);

echo "\n\nWith array_merge:\n";
$result = get_cat_recursive(2, $all_cats, [], true);
print_r($result);
