我想基于类别,子类别和子类别的同级来创建全动态屏幕,因为我具有如下所示的数组
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,[sequence] => 0,),'ParentID' => '2'
),);
为了使这个数组我尝试了下面的功能
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);
//echo json_encode($subcategory); die();
echo json_encode(array_map("utf8_converter",$subcategory));
使用此代码,我可以得到数组上面的内容,但我想要的数组就像ID 6的位置与ID 5正确的那样,它必须制作一个对象
我已经在buildTree()中尝试了以下代码
if ($children) {
$element['subcategories'] = $children;
}
if ($element['position_from'] != '') {
$sibling = buildTree($elements,$element['position_from']);
$element['sibling'] = $sibling;
}
但它不起作用。
有人可以帮我吗