问答项目---递归重新排序无限极子分类数组

递归重新排序无限极子分类数组方法:

// 递归重新排序无限极子分类数组
function recursive($array,$pid=0,$level=0){
    $arr = array();
    foreach ($array as $v) {
        if($v[‘pid‘] == $pid){
            $v[‘level‘] = $level;
            $v[‘html‘] = str_repeat(‘--‘,$level);
            $arr[] = $v;
            $arr = array_merge($arr,recursive($array,$v[‘id‘],$level+1));
        }
    }
    return $arr;
}

栏目做无限极分类:

public function index(){
    $cateTopList = M(‘category‘)->select();
    $cateTopList = recursive($cateTopList);
    $this->assign(‘cateTopList‘,$cateTopList);
    $this->display();
}

前台显示:

<foreach name="cateTopList" item="vo">
<tr id="{$vo[‘id‘]}" pid="{$vo[‘pid‘]}" <?php if($vo[‘pid‘] !=0): ?><?php echo "style=‘display:none;‘"; ?><?php endif; ?>>
    <td align="center" width="15%"><span class="open">+</span></td>
    <td align="center" width="15%">{$vo.id}</td>
    <td align="left" width="35%">{:str_repeat(‘&nbsp;&nbsp;‘,$vo[‘level‘])}<if condition="$vo[‘level‘] gt 0">|</if>{$vo.html}{$vo.name}</td>
    <td align="center">
        <a href="javascript:;" srcHref="{:U(‘addChild‘,array(‘pid‘=>$vo[‘id‘]))}" class="bt1">添加子分类</a>
        <a href="javascript:;" srcHref="{:U(‘edit‘,array(‘pid‘=>$vo[‘id‘]))}">修改</a>
        <a href="javascript:;"srcHref="{:U(‘delCate‘,array(‘pid‘=>$vo[‘id‘]))}" onclick="if(confirm(‘确定删除?‘)==false)return false;">删除</a>
    </td>
</tr>
</foreach>

JS控制显示:

<script type="text/javascript">
    //$(‘tr[pid != 0]‘).hide();
    $( ‘.open‘ ).toggle( function () {
        var index = $( this ).parents(‘tr‘).attr(‘id‘);
        $( this ).html( ‘-‘ );
        $( ‘tr[pid=‘ + index + ‘]‘ ).show();
    }, function () {
        var index = $( this ).parents(‘tr‘).attr(‘id‘);
        $( this ).html( ‘+‘ );
        $( ‘tr[pid=‘ + index + ‘]‘ ).hide();
    } );
</script>
时间: 2024-08-05 12:03:27

问答项目---递归重新排序无限极子分类数组的相关文章

PHP 实现无限极栏目分类

首先,创建一个DB CREATE TABLE IF NOT EXISTS `class` ( `id` mediumint(6) NOT NULL AUTO_INCREMENT, `title` varchar(30) NOT NULL, `pid` mediumint(6) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 然后插入数据 INSERT INTO `class` VALUES

Think PHP递归获取所有的子分类的ID (删除当前及子分类)

递归获取所有的子分类的ID: //递归获取所有的子分类的ID function get_all_child($array,$id){ $arr = array(); foreach($array as $v){ if($v['pid'] == $id){ $arr[] = $v['id']; $arr = array_merge($arr,get_all_child($array,$v['id'])); }; }; return $arr; } 在进行删除栏目的时候,需要删除当前栏目下的所有子栏

递归与无限极分类

在函数内部调用本身,且在调用时要做判断. 例:输出1~9 function deeploop(&$i=1){   //引用传值,防止递归时从1开始 echo  $i; $i++; if($i < 10){             //条件判断,防止无限递归 deeploop($i); } } 2.无限极分类原理:每次分类都需要记录它的父级id,如果是顶级,则父级id为0,通过父级id,一层一层往下查. 首先从数据库中取出结果集,把结果集中的pid与顶级的pid开始,然后确定顶级父级.依次往下

java递归、js递归,无限极分类菜单表

java-json import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; import java.util.List; /** * @Description: 菜单工具类 * @version: V1.0 */ public class MenuTreeUtil { /** * @return * @Author * @Param nodes :所有的节点列表 */ public List data(List<JS

php 递归实现无限极分类

public function getTree($data, $pId) { $tree = []; foreach($data as $k => $v) { if($v['parentid'] == $pId) { //父亲找到儿子 $v['parentid'] = $this->getTree($data, $v['id']); $tree[] = $v; //unset($data[$k]); } } return $tree; } 使用方法: public function produ

问答项目---栏目增删改方法示例

具体方法: // 递归重新排序无限极子分类数组 function recursive($array,$pid=0,$level=0){ $arr = array(); foreach ($array as $v) { if($v['pid'] == $pid){ $v['level'] = $level; $v['html'] = str_repeat('--',$level); $arr[] = $v; $arr = array_merge($arr,recursive($array,$v['

PHP实现无限极分类的两种方式,递归和引用

面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类 $array = array( array('id' => 1, 'pid' => 0, 'name' => '河北省'), array('id' => 2, 'pid' => 0, 'name' => '北京市'), array('id' => 3, 'pid' => 1, 'name' => '邯郸市'), array('id' =>

问答项目---删除分类的时删除其子分类

递归获取所有的子分类的ID: //递归获取所有的子分类的ID function get_all_child($array,$id){ $arr = array(); foreach($array as $v){ if($v['pid'] == $id){ $arr[] = $v['id']; $arr = array_merge($arr,get_all_child($array,$v['id'])); }; }; return $arr; } 删除分类及其子分类: //删除分类 public

js实现无限极分类

转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来做了. 不能说效率多高,只是说能实现了. 其实ACMer或者学过点算法和数据结构的应该知道这其实就是一个树,用数组存罢了,用数组存树的方法相信各位ACMer已经用的不要不要的了,所有并没有什么难度,知道思路就很好写了. 思路:获取到后台传来的数组dep,然后新建一个数组list,将dep遍历一遍,获