数据库提取的无限级数据排序
来源:互联网 发布:linux面试题及答案100 编辑:程序博客网 时间:2024/05/22 16:43
/**
* 判断节点是否有子节点
*
* @param array $arr 要序列化的数组
* @param 父结点名称
* @param int $pid 节点ID
* @return boolean
*/
function existsChild($arr, $pname, $pid)
{
foreach ($arr as $val)
{
if($val[$pname] == $pid)
{
return true;
}
}
return false;
}
/**
* 序列化树
*
* @param array $arr 要序列化的数组
* @param 子结点的名称
* @param 父结点的名称
* @param int $pid 第一层父类ID
* @param int $repeat 分级间隔
* @return array
*/
function listClass($arr, $cname, $pname, $pid = 0, $repeat = 0)
{
if(!is_array($arr)) {
echo '传入的不是数组';
exit;
}
if(empty($cname) || empty($pname)) {
echo '子类和父类字段名不能为空';
exit;
}
foreach ($arr as $key => $val)
{
if($val[$pname] == $pid)
{
$arrChild = array();
if($pid != 0)
{
$repeat++;
}
$str = str_repeat(' ', $repeat);
$arr[$key]['space'] = $str;
if(existsChild($arr, $pname, $val[$cname]))
{
$arr[$key]['undel'] = 1;
$arrChild = listClass($arr, $cname, $pname, $val[$cname], $repeat);
}
$array[] = $arr[$key];
$array = array_merge($array, $arrChild);
if($pid != 0)
{
$repeat--;
}
}
}
if(!is_array($array))
{
return array();
}
return $array;
}
/**
* 找出一个结点的所有子节点ID
*
* @param 序列化后的数组 $arr
* @param 子节点名 $cname
* @param 父结点名 $pname
* @param 要查找的子节点ID $cid
* @param 第一层父结点 $ppid
*/
function listChildId($arr, $cname, $pname, $cid, $ppid=0)
{
if(!is_array($arr)) {
echo '传入的不是数组';
exit;
}
if(empty($cname) || empty($pname)) {
echo '子类和父类字段名不能为空';
exit;
}
$rt = 0;
$st = 0;
foreach ($arr as $key => $val)
{
if($val[$cname] == $cid) {
$rt = 1;
$pid = $val[$pname];
}
if($val[$cname] != $cid && $rt && ($val[$pname] == $pid || $val[$pname] == $ppid)) $st = 1;
if($st) {
return $cids;
}
if($rt == 1) {
$cids[] = $val[$cname];
}
}
return $cids;
}
- 数据库提取的无限级数据排序
- 数据库处理千万级数据的解决方案
- sql server mdf碎片级数据库修复,数据库碎片级提取
- Mongodb的亿万级数据集合中提取字段的所有不同值集合
- php 一个无限级数组返回完整的键值
- ASP.NET无限级treeview控件、从数据库提取节点
- 上亿级数据量-JDBC插入数据库
- 上亿级数据量-JDBC插入数据库
- mysql 省级数据库,市级数据库。
- 上亿级数据量-JDBC插入数据库
- 数据库优化之百万级数据方案
- PHP递归算法示例:打印无限级数组元素的值
- MSSQL、MySQL 数据库删除大批量千万级百万级数据的优化
- 探讨下Tag标签的数据库设计(千万级数据量)
- SSIS操作MSSQL的千万级数据导入到Oracle数据库
- MSSQL、MySQL 数据库删除大批量千万级百万级数据的优化
- php向mysql数据库插入百万级数据的两种方法效率比较
- 将数据库读取的平级数据转换成父子孙结构
- 网页内强制折行与不折行的解决方案(ZZ)
- TCP与UDP区别
- Linux AIO
- java.util.ConcurrentModificationException 异常
- 四气三不怕两不惦记
- 数据库提取的无限级数据排序
- 存储过程的优点与缺点
- tiny_mce在线编辑器内JavaScript实现Ctrl+S无刷新保存。
- Can only perform operation while a transaction is active.
- maven管理java项目
- jQuery基础学习技巧总结
- JS CAll 继承
- WINCE里如何预设WIFI IP和WIFI的相关登录设置?
- oracle pl/sql实例练习