PHP为什么一定要引用变量?直接修改变量的值不就行了吗?

发布于2022-02-20 13:18:17

比如:$a=100; $b=&$a $b=200 echo $a;这样输出的就是200那为什么不把$a的值直接改成200呢?通过引用的$b来修改不是累赘吗?我是新手,请高手讲解下

4个回答
admin
网友回答2022-02-20
这个涉及到内存资源的问题,如果使用引用的话,$a和$b在内存中就是同一内存地址存储,这样可以减少内存的消耗。当然,从一个简单的数字或许看不到什么效果,但如果这个变量存储的是上万索引的数组或者对象,效果就很明显了。不使用引用的话,$b就会copy一个$a的值存储到内存中,就会多占一部分内存……
admin
网友回答2022-02-20
例子 $array = array( 0 => array( 0 => 1 )); //你要操作$array[0][0], 就可以引用一个$var $var = &$array[0][0]; //这样你操作$var 就相当于 操作$array[0][0]. 就不需要每次都打$array[0][0]. /*说到或许你还觉得有些没必要, 但有时结构比我们想象的复杂的多*/ //这是一种用法... 另外一种用法 就是函数引用 function test(&$a){ $a = $a + 1; } $b = 1; test(&$b); echo $b; //输出2
admin
网友回答2022-02-20
举个例子吧,我有个数组[1,2,3,4,5,6]。现在我想把这个数组的每个元素都乘以10 第一个数组打印出来还是 1,2,3,4,5,6。因为foreach循环数组的每个元素,乘以10后赋给$va,这个$va是新分配的一块内存,给这个值乘以10了,但是$arr的元素本身值并没有变 第二个数组打印出来就是我想要的了,foreach循环出数组的每个元素,是直接把这个元素给我了,我把它乘了10 当然解决这种问题不一定要传址引用的,第一种方法可以这样实现相同的功能 $va){ //$va不是直接从数组中拿的元素, //所以我只能拿到元素的值,乘以10后再赋给元素的索引 $arr1[$key] = $va * 10; } ?>
admin
网友回答2022-02-20
其实这几个变量也只是程序的作者为了说明指针的操作而做的,说明不了什么问题。 再看看别人怎么说的。

回到
顶部