PHP关于foreach使用引用变量的坑】的更多相关文章

写PHP好多年,但仍然会犯低级错误,今天遇到个 foreach中引用变量时的坑,PHP版本为 5.6.12 代码如下: <?php $arr = ['a', 'b', 'c', 'd', 'e']; foreach ($arr as $i=>&$a) { $a = $a.'_'. $a; echo $a .'<br>'; } echo '<hr>'; foreach ($arr as $i=>$a) { echo $a .'<br>'; } e…
PHP版本为 5.6.12 代码如下:   1 2 3 4 5 6 7 8 9 10 11 12 <?php $arr = ['a', 'b', 'c', 'd', 'e']; foreach ($arr as $i=>&$a) {   $a = $a.'_'. $a;   echo $a .'<br>'; } echo '<hr>'; foreach ($arr as $i=>$a) {   echo $a .'<br>'; } echo '…
$a = array('a','b','c'); foreach($a as &$v){} foreach($a as $v){ } var_dump($a); 现在.不要打开浏览器,猜测一下.输出的结果是什么? 对引用比较了解的童鞋可能已经看出来了.正确答案是: array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> &string(1) "b"}  也…
foreach ($log['data'] as $k => &$value) { if ($value['token'] != 0) { $value['change_num'] = $value['token'] . ' [token]'; } else { $value['change_num'] = $value['money'] . ' [money]'; } unset($value['money']); unset($value['token']); } $info['logI…
(1)PHP引用变量 概念:不同的变量名,访问同一个变量内容,使用& 知识点: 使用php函数 (a)memory_get_usage() 查看内存使用情况 eg // 定义一个变量 $a = range(0, 1000); var_dump(memory_get_usage()); 运行结果 (b)xdebug_debug_zval() zval变量容器 eg // zval变量容器 $a = range(0, 3); xdebug_debug_zval('a'); 运行结果 refcount…
有时候我们为了在循环过程中改变数组项的值,在foreach的时候变量入口可以加个&符合, 表示,循环过程中使用数组中原来的值,而不是一个复制的值,如 foreach ($array as &$item) {} 这样一来,我们在循环中修改$item的值的时候,实际上修改的是$array中对应的值, 而如果不加&符号的话,在循环中修改$item的值不会影响到$array. 例子: $array = [ 'name' => 'Jobs', 'age' => 50, ]; fo…
PHP引用变量 常见引用变量面试题: 什么是引用变量? 在PHP中用什么符号定义引用变量? 考点:PHP的引用变量的概念及定义方式 概念:在PHP中引用意味着用不用的名字访问同一个变量内容     定义方式:&符号 延伸:PHP引用变量的原理 //定义一个变量 $a = range(0,100); //内存开辟一块空间存储$a //定义变量b,将a变量赋值给b //cow copy on write cow机制 $b = $a; //此时不会新开辟一块新空间存储$b //当$a或$b发生改变 才…
final修饰的引用变量一旦初始化赋值之后就不能再指向其他的对象,那么该引用变量指向的对象的内容可变吗?看下面这个例子: public class Test { public static void main(String[] args) { final MyClass myClass = new MyClass(); System.out.println(++myClass.i); } } class MyClass { public int i = 0; } 这段代码可以顺利编译通过并且有输…
普通的引用变量的销毁大家都知道, 当unset的时候如果refcount = 0 则认为无用, 销毁. 但是手册中提到一点会有递归引用的问题,很是奇葩 代码如下 <?php $a = 1; $arr[0] = &$a; $arr[1] = &$arr; /* 用print_r打印出现 Array ( [0] => 1 [1] => Array ( [0] => 1 [1] => Array *RECURSION* ) ) */ 这个时候 $arr[1] 递归的…
引用变量 c++中引用变量的使用: 定义: int rate=80; int  & pt=rate 1.pt 是引用变量,申明引用变量时必须将其初始化.pt 和rate 的值指向相同的内存变量. 引用的最多用处就是作为函数的参数(结构和对象).通过引用变量作参数可以是函数使用原始数据.而不是拷贝. 2.引用的特点更接近于const 指针,一旦与某个变量关联起来就将一直效忠于它,可以通过初始化来设置引用,但是不能通过赋值来设置 int other=30; pt=other   ; 此时,rate的…