21,886
社区成员
发帖
与我相关
我的任务
分享
<?php
//自己生成一个字段id为数组key的数组
$a[1] = array('1', '0', 'WEB开发','web');
$a[2] = array('2', '1', '后端','control');
$a[3] = array('3', '2', '语言','language');
$a[4] = array('4', '2', '数据库','data');
$a[5] = array('5', '3', 'php','php');
$a[6] = array('6', '3', 'jsp','jsp');
$a[7] = array('7', '3', 'asp','asp');
$a[8] = array('8', '0', '手机应用开发','phone');
$a[9] = array('9', '8', 'ios','ios');
function getPath($id,$arr)
{
$path = array();
while(isset($arr[$id]))
{
array_unshift($path,$arr[$id][3]);
$id = $arr[$id][1];
}
return $path;
}
echo implode(DIRECTORY_SEPARATOR,getPath(5,$a));
echo PHP_EOL;
echo implode(DIRECTORY_SEPARATOR,getPath(7,$a));
echo PHP_EOL;
echo implode(DIRECTORY_SEPARATOR,getPath(4,$a));
?>
//SELECT id,pid,path FROM calss;取得数据集组合成下面的数组
$array = array('1' => 0, '2' => 1, '3' => 2, '4' => 2, '5' => 3, '6' => 3, '7' => 3, '8' => 0, '9' => 8);
$pathArray = array(1 => 'web', 2 => 'control', 3 => 'language', 4 => 'data', 5 => 'php', 6 => 'jsp', 7 => 'asp', 8 => 'phone', 9 => 'ios');
//取得id列表
$idArry=array();
getTopID(5, $array);
//循环id列表输出最后结果
echo listPath(5, $idArr, $pathArray), "\n";
unset($idArr);
getTopID(6, $array);
echo listpath(6, $idArr, $pathArray), "\n";
unset($idArr);
getTopID(8, $array);
echo listpath(8, $idArr, $pathArray), "\n";
unset($idArr);
getTopID(9, $array);
echo listpath(9, $idArr, $pathArray), "\n";
unset($idArr);
//函数
/**
* 取得上级Id数组
* @param $id
* @param $array
* @return array
*/
function getTopID($id, $array)
{
global $idArr;
if (isset($array[$id])) {
$idArr[] = $array[$id];
getTopID($array[$id], $array);
}
}
/**
* 根据上级ID数组排序结果
* @param $id
* @param $list
* @param $array
* @return string
*/
function listPath($id, $list, $array)
{
$path = '';
array_push($list, $id);
sort($list);
foreach ($list as $value) {
if (isset($array[$value])) {
$path .= $array[$value] . '/';
}
}
return $path;
}