【发布时间】:2020-01-09 18:27:24
【问题描述】:
我有一个这样的 PHP 类别数组
$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 auto parts -- Engine Related ---- Spark Plugs ---- Engine Oil -- Body Related Sedan auto parts -- Engine Related
我正在尝试使用https://stackoverflow.com/a/48598077/12677030 制作面包屑
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));
小功能,很好用,但是...
- 我不知道用 HTML /category.php?id= 显示它
- 显示
发动机油 -> 发动机相关 -> SUV 汽车零件
而不是我想要的,
SUV 汽车配件 -> 发动机相关 -> 机油
我也尝试过这种方法https://stackoverflow.com/a/52571259/12677030 似乎解决了我的两个问题..但是这不会为一个父母一个孩子生成面包屑。
轿车零部件 -> 发动机相关
仅在
时显示父类别 -> 子类别 -> 子类别
如果有人能提供任何解决方案来纠正这些问题,我将不胜感激。
预期输出将是
SUV auto Parts -> Engine Related -> Engine Oil
<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
<a href="/category/6">Sedan auto Parts</a> -> <a href="/category/7">Engine Related</a>
【问题讨论】:
-
我认为他的问题 1. 关于 HTML,他是否想将面包屑名称包装在
<a>锚标记中,并插入 url 和类别 ID。仅使用implode就相当困难。 -
尽管将
$result[]=$array[$id]['name'];更改为$result[]='<a href="/category.php?id='. $array[$id]['id'] .'">'. $array[$id]['name'] .'</a>';之类的内容可能会如您所愿? -
@ggorlen 我希望输出类似于
<a href="/category/1">SUV auto Parts</a> -> <a href="/category/2">Engine Related</a> -> <a href="/category/4">Engine Oil</a>或者当我访问“引擎相关”下的项目时将类似于<a href="/category/6">Sedan auto Parts</a> -> <a href="/category/7">Engine Related</a> -
@IncredibleHat 效果很好,第一个问题解决了。我很感激。
-
你说的“我无法显示”是什么意思?到目前为止,您尝试过什么?
标签: php arrays recursion breadcrumbs