Php 使用类别列出多维数组>;子范畴逻辑
我有一个数组存储根类别的所有子类别,例如: 我只想这样列出它们:Php 使用类别列出多维数组>;子范畴逻辑,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个数组存储根类别的所有子类别,例如: 我只想这样列出它们: A A> B A> B>C A> B>C>E A> B>D A> B>D>F A> B>G A> B>G>H 我的阵列: Array ( [0] => Array ( [id] => 2 [title] => B [sub_category] => Array ( [0] => Array ( [id] => 3 [ti
- A
- A> B
- A> B>C
- A> B>C>E
- A> B>D
- A> B>D>F
- A> B>G
- A> B>G>H
Array (
[0] => Array (
[id] => 2
[title] => B
[sub_category] => Array (
[0] => Array (
[id] => 3
[title] => C
[sub_category] => Array (
[0] => Array (
[id] => 5
[title] => E
[sub_category] => Array ()
)
)
)
[1] => Array (
[id] => 4
[title] => D
[sub_category] => Array (
[0] => Array (
[id] => 6
[title] => F
[sub_category] => Array ()
)
)
)
[2] => Array (
[id] => 7
[title] => G
[sub_category] => Array (
[0] => Array (
[id] => 10
[title] => H
[sub_category] => Array ()
)
)
)
)
)
)
我的函数列表中没有“>”
,没有父函数,只有标题
以下是我的职能:
function buildTree($tree) {
foreach ($tree as $node)
{
echo '<li>'.$node['title'].'</li>';
if (!empty($node['sub_category'])) {
echo '<ul>';
buildTree($node['sub_category']);
echo '</ul>';
}
}
}
function categoryTree($db, $root_id) {
$tree = array();
$sub_categories = $db->get_results('SELECT * FROM categories WHERE parentid="'.$root_id.'"');
if ($sub_categories) {
foreach ($sub_categories as $sub_category) {
$tree[] = array(
"id" => $sub_category->id,
"title" => $sub_category->title,
"sub_category" => categoryTree($db, $sub_category->id)
);
}
}
return $tree;
}
函数构建树($tree){
foreach($tree作为$node)
{
回显“”.$node['title']”。 ;
如果(!空($node['sub_category'])){
回声“”;
构建树($node['sub_category']);
回声“
”;
}
}
}
函数类别树($db,$root\u id){
$tree=array();
$sub_categories=$db->get_results('SELECT*FROM categories,其中parentid=“.”.$root_id.”);
如果($子类别){
foreach($sub_类别作为$sub_类别){
$tree[]=数组(
“id”=>$sub_category->id,
“title”=>$sub_category->title,
“sub_category”=>categoryTree($db,$sub_category->id)
);
}
}
返回$tree;
}
问题解决了。这是我的新代码:
function buildTree($db, $tree) {
foreach ($tree as $node)
{
$header = array();
$id = $node['id'];
$can_i_stop = false;
$has_parent = $db->get_var('SELECT parentid FROM categories WHERE id="'.$node['id'].'"');
if (!($has_parent == '') && !($has_parent == null)) {
$seperator = ' > ';
}else{
$seperator = '';
}
while ($can_i_stop == false) {
$parent_id = $db->get_var('SELECT parentid FROM categories WHERE id="'.$id.'"');
if (!($parent_id == '') && !($parent_id == null)) {
$parent_title = $db->get_var('SELECT title FROM categories WHERE id="'.$parent_id.'"');
array_push($header, $parent_title);
$id = $parent_id;
$can_i_stop = false;
}else{
$can_i_stop = true;
}
}
echo '<li>'.implode(' > ', array_reverse($header)).$seperator.$node['title'].'</li>';
if (!empty($node['sub_category'])) {
echo '<ul>';
buildTree($db, $node['sub_category']);
echo '</ul>';
}
}
}
function categorySubTree($db, $root_id) {
$tree = array();
$sub_categories = $db->get_results('SELECT * FROM categories WHERE parentid="'.$root_id.'"');
if ($sub_categories) {
foreach ($sub_categories as $sub_category) {
$tree[] = array(
"id" => $sub_category->id,
"title" => $sub_category->title,
"sub_category" => categorySubTree($db, $sub_category->id)
);
}
}
return $tree;
}
function categoriesTree($db) {
$tree = array();
$categories = $db->get_results('SELECT * FROM categories WHERE is_subcategory=0');
if ($categories) {
foreach ($categories as $category) {
$tree[] = array(
"id" => $category->id,
"title" => $category->title,
"sub_category" => categorySubTree($db, $category->id)
);
}
}
return $tree;
}
函数构建树($db,$tree){
foreach($tree作为$node)
{
$header=array();
$id=$node['id'];
$can_i_stop=false;
$has_parent=$db->get_var('SELECT parentid FROM categories,其中id=“”。$node['id'].'”);
如果(!($has\u parent='')和($has\u parent==null)){
$separator='>';
}否则{
$separator='';
}
而($can\u i\u stop==false){
$parent_id=$db->get_var('SELECT parentid FROM categories,其中id=“.”.$id.”);
如果(!($parent\u id='')和($parent\u id==null)){
$parent_title=$db->get_var('SELECT title FROM categories WHERE id=“”.$parent_id.”);
数组\u push($header,$parent\u title);
$id=$parent\u id;
$can_i_stop=false;
}否则{
$can_i_stop=true;
}
}
回显“”。内爆(“>”,数组反向($header))。$separator.$node['title']。 ”;
如果(!空($node['sub_category'])){
回声“”;
构建树($db,$node['sub_category']);
回声“
”;
}
}
}
函数类别子树($db,$root\u id){
$tree=array();
$sub_categories=$db->get_results('SELECT*FROM categories,其中parentid=“.”.$root_id.”);
如果($子类别){
foreach($sub_类别作为$sub_类别){
$tree[]=数组(
“id”=>$sub_category->id,
“title”=>$sub_category->title,
“sub_category”=>categorySubTree($db,$sub_category->id)
);
}
}
返回$tree;
}
函数categoriesTree($db){
$tree=array();
$categories=$db->get_results('SELECT*FROM categories,其中是_subcategory=0');
如果($类别){
foreach($categories作为$category){
$tree[]=数组(
“id”=>$category->id,
“标题”=>$category->title,
“sub_category”=>categorySubTree($db,$category->id)
);
}
}
返回$tree;
}
请添加实际输入,并发布您尝试的问题解决方案。我们无法猜测您的数据是什么样子,我们也不会从头开始为您构建解决方案。虽然“字符串”>“在您的示例中起作用,因为尖括号对HTML具有特殊意义,我建议使用与右尖括号相对应的HTML实体将该字符串替换为稍微不同的字符串,如下所示:'',这将导致显示右括号字符,而不会有附加任何其他含义的风险。