关于 将一个数组赋值给另外一个数组会重置原来数组的指针 的问题
来源:互联网 发布:数据库sum函数怎么用 编辑:程序博客网 时间:2024/05/22 03:08
比较好用的数组遍历方法有两种:1.foreach(; ; ;)。 2.list( )搭配each( )。但在each( )函数在运用的时候需要注意一个问题。今天写了个程序,结果就陷入死循环了。
代码如下:
<?php$fruit = array('a'=>'apple','b'=>'banana');while( list($k,$v) = each($fruit) ){ echo "$k => $v "; $tmp=$fruit;}?>
为什么程序会陷入死循环了,在php手册上有这样一个解释:因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上边的例子中如果我们在循环内部将 $fruit 赋给了另一个变量的话将会导致无限循环。
那么验证了一下,指针改变的过程:
<?php$fruit = array('a'=>'apple','b'=>'banana');$tmp=$fruit;echo current($tmp);//结果为appleecho current($fruit);//结果为applevar_dump($tmp);//赋值成功,array('a'=>'apple','b'=>'banana')echo "<br />";each($fruit);//会使指针下移一位$tmp=$fruit;echo current($tmp);//结果为bananaecho current($fruit);//结果为bananavar_dump($tmp);//赋值成功,array('a'=>'apple','b'=>'banana')echo "<br />";each($fruit);//指针指向空了$tmp=$fruit;//将指针重置var_dump(current($fruit));//bool(false),不出所料没有值echo current($tmp);//结果为apple,果真将指针重置了var_dump($tmp);//赋值成功,array('a'=>'apple','b'=>'banana')?>
虽然知道了函数的基本用法,但对它的实现过程却不了解,所以老是出现一些自己也想不到的问题,以后用函数的时候,还得好好看看手册。
1 0
- 关于 将一个数组赋值给另外一个数组会重置原来数组的指针 的问题
- 将一个数组赋值给另外一个数组
- 关于数组给指针赋值的问题
- 用指针给数组赋值的一个小问题
- 将JSON对象、数组的值赋给另外一个对象,(互不影响) 对象赋值
- [C语言]给一个二维字符数组赋值的问题
- 给字符数组的一个字符赋值整数0的结果原来是这样
- 关于一个给二维数组循环赋值问题的本渣研究出的解决办法[C#]
- 关于未指针数组赋值的问题
- 关于将数组地址赋给指针的问题
- JAVA-编写循环将一个数组的值赋值给另一数组
- 关于c中对数组赋值的一个问题
- 一个字符数组赋值的问题
- android典型代码系列(十九)------将一个数组复制成为另外一个数组的方法
- 将一个数组插入到另外一个数组的指定下标
- 将一个数组里的元素添加到另外一个数组里
- Algorithm_判断一个数组是另外一个数组的子集
- 关于数组与指针的一个小问题
- 业务运维实战:腾讯是怎么优化APP用户体验的?
- django + mssql + sqlserver2008
- Spring基于注解实现Bean定义支持如下三种注解
- 2016多校第一场 1006 hdu 5728 PowMod
- Class.forName的理解
- 关于 将一个数组赋值给另外一个数组会重置原来数组的指针 的问题
- Codeforces Round #363 (Div. 2) D. Fix a Tree
- Android.mk文件语法规范及使用模板【转载】
- React 开源组件笔记
- 自定义控件
- JS鼠标事件大全
- Maven项目中的pom.xml详解
- 熟悉业务逻辑
- MySQL权限体系