首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将PHP类别转换为多个子类别的HTML面包屑

将PHP类别转换为多个子类别的HTML面包屑
EN

Stack Overflow用户
提问于 2020-01-09 18:27:24
回答 1查看 526关注 0票数 1

我有一个PHP数组,这些类别如下

代码语言:javascript
运行
复制
$category = array(
    1 => array(
        'id' => 1,
        'parentID' => 0,
        'name' => 'SUV auto parts'
    ),
        2 => array(
            'id' => 2,
            'parentID' => 1,
            'name' => 'Engine Related'
        ),
            3 => array(
                'id' => 3,
                'parentID' => 2,
                'name' => 'Spark Plugs'
                        ),
            4 => array(
                'id' => 4,
                'parentID' => 2,
                'name' => 'Engine Oil'
                        ),
        5 => array(
            'id' => 5,
            'parentID' => 1,
            'name' => 'Body related'
        ),
    6 => array(
        'id' => 6,
        'parentID' => 0,
        'name' => 'Sedan auto parts'
    ),
        7 => array(
            'id' => 7,
            'parentID' => 6,
            'name' => 'Engine Related'
            ),
        );

我已经设法像这样显示菜单树,

SUV汽车配件发动机相关火花塞发动机油车身相关轿车零部件发动机相关

我试着用https://stackoverflow.com/a/48598077/12677030做面包屑

代码语言:javascript
运行
复制
function breadcrumber($array,$id){
    static $result=[];  // declare the storage variable without losing elements during recursion
    if(isset($array[$id])){  // if target exists
        $result[]=$array[$id]['name'];  // store title text
        $parent=$array[$id]['parentID'];  // assign new target
        unset($array[$id]);  // remove possibility of an infinite loop
        breadcrumber($array,$parent);  // recurse
    }
    return $result;
}

echo implode(' -> ',breadcrumber(array_column($category,NULL,'id'),4));

功能很小,效果很好,但是.

我想不出用/category.php?id=

  • It显示

来显示它

发动机油->发动机相关的-> SUV汽车零部件

我不想让它变成那样,

SUV汽车零部件->发动机相关的->发动机油

我也尝试过这种方法,https://stackoverflow.com/a/52571259/12677030似乎解决了我的两个问题,..however,这不会为一个父、一个孩子生成面包屑。

轿车汽车零部件->发动机相关

只在

父类->子类别->子类别

如果有人提出解决办法来纠正这些问题,我将不胜感激。

预期产出将是

SUV auto Parts -> Engine Related -> Engine Oil

代码语言:javascript
运行
复制
<a href="/category/1">SUV auto Parts</a> -> <a href="/category/2">Engine Related</a> -> <a href="/category/4">Engine Oil</a>

或只适用于一个子女类别;

Sedan auto Parts -> Engine Related

代码语言:javascript
运行
复制
   <a href="/category/6">Sedan auto Parts</a> -> <a href="/category/7">Engine Related</a>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-09 21:30:21

#1的解决方案

@IncredibleHat的学分

替换

代码语言:javascript
运行
复制
$result[]=$array[$id]['name'];

使用

代码语言:javascript
运行
复制
$result[]='<a href="/category.php?id='. $array[$id]['id'] .'">'. $array[$id]['name'] .'</a>';

给出输出Engine Oil -> Engine Related -> SUV auto Parts

代码语言:javascript
运行
复制
<a href="/category.php?id=4">Engine Oil</a> -> <a href="/category.php?id=2">Engine Related</a> -> <a href="/category.php?id=1">SUV auto Parts</a>

#2的解决方案

使用称为array_reverse https://www.php.net/manual/en/function.array-reverse.php的PHP数组函数

替换

代码语言:javascript
运行
复制
return $result;

使用

代码语言:javascript
运行
复制
return array_reverse($result);

现在,输出将是;SUV auto Parts -> Engine Related -> Engine Oil

代码语言:javascript
运行
复制
<a href="/category.php?id=1">SUV auto Parts</a> -> <a href="/category.php?id=2">Engine Related</a> -> <a href="/category.php?id=4">Engine Oil</a>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59670108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档