Мне нужен один массив подкатегорий категорий для моего сайта, и для этого я сделал нижеприведенную функцию для извлечения данных в форматирующей структуре.
function select_all($con){
$table_name ="SELECT * FROM `Category`";
$table_name_result = mysqli_query($con,$table_name);
$array = mysqli_fetch_all($table_name_result, MYSQLI_ASSOC);
return $array;
}
function buildTree(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildTree($elements, $element['ID']);
if ($children) {
$element['subcategories'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
$select_all = select_all($con);
$subcategory = buildTree($select_all);
с этой функцией, у меня есть массив, который приведен ниже
array(
array(
'ID' => '1',
'Name' => 'ABC',
'Subcategory' => '',
'ParentID' => '0'
),
array(
'ID' => '2',
'Name' => 'DEF',
'Subcategory' => array(
'ID' => '3',
'Name' => 'QFE',
'Subcategory' => array(
[0] => stdClass Object(
[ID] => 5,
[categoryname] => Main Menu,
[type] => redirectLink,
[redirection_link] => main menu,
[position] => center,
[position_from] => ,
[parent_id] => 4,
[sequence] => 0
),
[1] => stdClass Object (
[ID] => 6,
[categoryname] => In Range,
[type] => screenTitle,
[redirection_link] => ,
[position] => right,
[position_from] => 5,
[parent_id] => 4,
[sequence] => 0,
),
),
'ParentID' => '2'
),
'ParentID' => '0'
),
);
, что хорошо, но при проверке ID 6 стоит прямо на ID 5
, поэтому я хочу, чтобы ID 5
и ID 6
были в одном объекте, чтобы я мог правильно оформить свой экран.
но я не могу найти способ, с каким условием я могу получить этот ответ в buildTree()
, кто-нибудь может мне помочь с этим.