PHP如何通过传引用的思想实现无限分类(代码简单)
无限级分类,主要是通过储存上级分类的id以及分类路径来实现
在我的Simpla中,用到了无限分类,使用了PHP的传引用思想实现无限分类的方法,可以完美展示类似这样的分类模式。
id pid name
1 0 四川
2 0 重庆
3 1 成都
4 1 绵阳
5 3 高新区
代码如下所示:
/** * 数组变成无限级分类--传引用思想 * @param array $items * @return array */ public static function get_tree($orig) { //解决下标不是1开始的问题 $items = array(); foreach ($orig as $key => $value) { $items[$value[‘id‘]] = $value; } //开始组装 $tree = array(); foreach ($items as $key => $item) { if ($item[‘pid‘] == 0) { //为0,则为1级分类 $tree[] = &$items[$key]; } else { if (isset($items[$item[‘pid‘]])) { //存在值则为二级分类 $items[$item[‘pid‘]][‘child‘][] = &$items[$key]; //传引用直接赋值与改变 } else { //至少三级分类 //由于是传引用思想,这里将不会有值 $tree[] = &$items[$key]; } } } return $tree; }
以上内容很简单吧,如有错误或者更好的方法,希望可以相互交流。谢谢。!
相关推荐
-
PHP引用的调用方法分析
本文实例讲述了PHP引用的调用方法.分享给大家供大家参考,具体如下: 示例1: function test($arr){} echo test(&$arr); 示例2: function test(&$arr){} echo test($arr); 示例1和2是一样的效果. 示例3: function &test($arr){return $result;} echo &test($a);//有效 echo test($a);//返回的是值,不是引用 总结:只有定义方法时在
-
PHP中返回引用类型的方法
返回引用,在定义和调用的时候 & 都不可以省略. 这是个比较容易混淆的概念,如果不是出于某些特殊的原因,建议还是不要使用. 说他很容易混,是因为 Reference 在 PHP5 中的变化,造成其在 PHP4/PHP5 中表现的行为差异比较大. 举个例子说明: 复制代码 代码如下: <?php $color = 'YellowGreen'; function &getRef() { global $color; return $color; } funct
-
通过5个php实例细致说明传值与传引用的区别
哈哈,会用只是初级阶段,要了解原理是什么,这样才能更好去运用,费话不多说 传值:是把实参的值赋值给行参 ,那么对行参的修改,不会影响实参的值 传引用 :真正的以地址的方式传递参数传递以后,行参和实参都是同一个对象,只是他们名字不同而已对行参的修改将影响实参的值 说明: 传值:根copy是一样的.打个比方,我有一橦房子,我给你建筑材料,你建了一个根我的房子一模一样的房子,你在你的房子做什么事都不会影响到我,我在我的房子里做什么事也不会影响到你,彼此独立. 传引用:让我想起了上大学时学习C语言的指针
-
php 传值赋值与引用赋值的区别
传值赋值:当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋予到目标变量.这意味着,例如,当一个变量的值赋予另一个变量时,改变其中一个变量的值,将不会影响到另一个变量. 复制代码 代码如下: <?php <?php $a=123; $a=123; $b=$a; $b=&$a; $a=321; $a=321; Echo"$a,$b";//显示"321,123" Echo"$a,$b";//显示"321,321&q
-
php函数传值的引用传递注意事项分析
本文实例讲述了php函数传值的引用传递注意事项.分享给大家供大家参考,具体如下: Strict standards: Only variables should be passed by reference 网上查到资料有这么一句话: 在php5.3以上版本会出这个问题,应该也和php的配置有关,只要把这一句拆成两句就没有问题了.因为array_walk的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值.当然你也可以修改php.ini 里的 error_reporting
-
php5.4传引用时报错问题分析
本文实例分析了php5.4传引用时报错问题.分享给大家供大家参考,具体如下: php5.3系列版本以及以前版本,传引用没有什么问题,升级到php5.4以后,传引用的地方,全报错 Fatal error: Call-time pass-by-reference has been removed in F:\work\wamp\www\test\test.php on line 6.看一下下面的例子. 例1,递归传引用,在php 5.3及以及版本,测试结果 <?php function test($
-
PHP、Nginx、Apache中禁止网页被iframe引用的方法
可以使用php或nginx等添加X-Frame-Options header来控制frame权限X-Frame-Options有三个可选的值: DENY:浏览器拒绝当前页面加载任何Frame页面SAMEORIGIN:frame页面的地址只能为同源域名下的页面ALLOW-FROM:允许frame加载的页面地址 PHP代码: 复制代码 代码如下: header('X-Frame-Options:Deny'); Nginx配置: 复制代码 代码如下: add_header X-Frame-Option
-
PHP引用(&)各种使用方法实例详解
php的引用(就是在变量或者函数.对象等前面加上&符号),在PHP 中引用的意思是:不同的名字访问同一个变量内容.与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容,在内存中存放的地址. 1.变量的引用PHP 的引用允许你用两个变量来指向同一个内容 复制代码 代码如下: <? $a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG&quo
-
php引用传值实例详解学习
引用是什么在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像 C 的指针,替代的是,引用是符号表别名.注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.最接近的比喻是 Unix 的文件名和文件本身--变量名是目录条目,而变量内容则是文件本身.引用可以被看作是 Unix 文件系统中的 hardlink.一:变量的引用 复制代码 代码如下: <?php$a =100;$b = &$a;echo $b; //这里输出100echo $a; /
-
PHP的引用详解
引用是什么 在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像 C 的指针,替代的是,引用是符号表别名.注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.最接近的比喻是 Unix 的文件名和文件本身--变量名是目录条目,而变量内容则是文件本身.引用可以被看作是 Unix 文件系统中的 hardlink. 引用做什么 PHP 的引用允许用两个变量来指向同一个内容.意思是,当这样做时: 复制代码 代码如下: <?php $a =& $b; ?>
随机推荐
- jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
- 详解如何构建Angular项目目录结构
- virtualbox 中的linux 共享文件的方法
- vue bootstrap小例子一枚
- JavaScript中SetInterval与setTimeout的用法详解
- .Net WInform开发笔记(五)关于事件Event
- c#调用qq邮箱smtp发送邮件修改版代码分享
- jsp实现从服务器下载xls文件到客户端的方法
- 最完的htaccess文件用法收集整理
- 海量数据库查询语句
- Mysql中Join的使用实例详解
- Javascript之Number对象介绍
- 一个JavaScript变量声明的知识点
- JavaScript上传文件时不用刷新页面方法总结(推荐)
- JS实现线性表的链式表示方法示例【经典数据结构】
- iOS实现搭建聊天页面的实例代码
- vue2.0 子组件改变props值,并向父组件传值的方法
- Python网络编程使用select实现socket全双工异步通信功能示例
- VBS基础篇 - vbscript常用函数及功能
- vue elementUI table表格数据 滚动懒加载的实现方法