Last active
November 10, 2018 11:48
-
-
Save curder/0931e23fd7d495bb183643cc9c7fde29 to your computer and use it in GitHub Desktop.
无限极分类和面包屑导航
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* 无限极分类组合多维数组(典型利用场景:多层级导航) | |
* @param array $categories 数组形式的categories | |
* @param integer $pid 上级分类id | |
* @param integer $level 层级 | |
* @param string $html 字符串 | |
* @return array $arr 重组后的二维数据 | |
*/ | |
function get_family($categories, $pid = 0, $level = 0, $html=' ') | |
{ | |
$arr = []; | |
foreach ($categories as $v) { | |
if ($v['parent_id'] == $pid) { | |
$v['level'] = $level+1; | |
$v['html'] = str_repeat($html, $level); | |
$v['children'] = get_family($categories, $v['id'], $level + 1); | |
$arr[] = $v; | |
} | |
} | |
return $arr; | |
} | |
/** | |
* 无限极分类组合一维数组 获取所有子级id(典型利用场景:查找pid为0栏目下的商品 合并数组用in在数据中查找数据) | |
* @param array $categories 数组形式的categories | |
* @param integer $pid 待查找的父级id | |
* @return array $arr 所有子级分类id | |
*/ | |
function get_children_ids($categories, $pid) | |
{ | |
$arr = []; | |
foreach ($categories as $v) { | |
if ($v['parent_id'] == $pid) { | |
$arr[] = $v['id']; | |
$arr = array_merge($arr, get_children_ids($categories, $v['id'])); | |
} | |
} | |
return $arr; | |
} | |
/** | |
* 无限极分类组合一维数组 获取其所有父级数据(典型使用场景:面包屑导航) | |
* @param array $categories 数组形式的categories | |
* @param integer $cid 待查找的cid | |
* @return array $arr 所有父级栏目信息 | |
*/ | |
function get_parents_id($categories, $cid) | |
{ | |
$arr = []; | |
foreach ($categories as $v) { | |
if ($v['id'] == $cid) { | |
$arr[] = $v['id']; | |
$arr = array_merge(get_parents_id($categories, $v['parent_id']), $arr); | |
} | |
} | |
return $arr; | |
} | |
/** | |
* 无限极分类组合一维数组 获取其所有父级数据(典型使用场景:面包屑导航) | |
* @param array $categories 数组形式的categories | |
* @param integer $cid 待查找的cid | |
* @return array $arr 所有父级栏目信息 | |
*/ | |
function get_parents($categories, $cid) | |
{ | |
$arr = []; | |
foreach ($categories as $v) { | |
if ($v['id'] == $cid) { | |
$arr[] = $v; | |
$arr = array_merge(get_parents($categories, $v['parent_id']), $arr); | |
} | |
} | |
return $arr; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment