<?php
/**
* 无限分类a
* 表设计:id name pid sort 传入一个无限分类表的二维数组$cate
* 应用一:组合一维数组;应用场景:下拉选择列表
*/
function unlimited_for_one_level($cate, $pid = 0, $level = 0, $html = '--')
{
$arr = [];
foreach ($cate as $v) {
if ($v['pid'] == $pid) {
$v['level'] = $level + 1;
$v['html'] = str_repeat($html, $level);
$arr[] = $v;
$arr = array_merge($arr, unlimited_for_one_level($cate, $v['id'], $level + 1, $html));
}
}
return $arr;
}
/**
* 无限分类b
* 表设计:id name pid sort 传入一个无限分类表的二维数组$cate
* 应用二:组合多维数组;应用场景:循环里面套循环
*/
function unlimited_for_multi_level($cate, $pid = 0)
{
$arr = [];
foreach ($cate as $v) {
if ($v['pid'] == $pid) {
$v['child'] = unlimited_for_multi_level($cate, $v['id']);
$arr[] = $v;
}
}
return $arr;
}
/**
* 无限分类c
* 表设计:id name pid sort 传入一个无限分类表的二维数组$cate
* 传递一个子分类ID返回所有父级分类;如:由T恤得到--首页>>服装>>男装>>T恤;
*/
function unlimited_get_parents($cate, $id)
{
$arr = [];
foreach ($cate as $v) {
if ($v['id'] == $id) {
$arr[] = $v;
$arr = array_merge(unlimited_get_parents($cate, $v['pid']), $arr);
}
}
return $arr;
}
/**
* 无限分类d
* 表设计:id name pid sort 传入一个无限分类表的二维数组$cate
* 传递一个父级ID得到它的所有子级ID
*/
function unlimited_get_childs_id($cate, $pid)
{
$arr = [];
foreach ($cate as $v) {
if ($v['pid'] == $pid) {
$arr[] = $v['id'];
$arr = array_merge($arr, unlimited_get_childs_id($cate, $v['id']));
}
}
return $arr;
}
/**
* 无限分类e
* 表设计:id name pid sort 传入一个无限分类表的二维数组$cate
* 传递一个父级ID得到它的所有子级
*/
function unlimited_get_childs($cate, $pid)
{
$arr = array();
foreach ($cate as $v) {
if ($v['pid'] == $pid) {
$arr[] = $v;
$arr = array_merge($arr, unlimited_get_childs($cate, $v['id']));
}
}
return $arr;
}