首先,何为变量传值,所谓变量传值就是将一个变量赋值给另外一个变量。
变量传值有两种方式:值传递和引用传递。
1:值传递:值传递就是将变量保存的值复制一份,然后将新的值给另外一个变量保存(两个变量没有关系)
2:引用传递:引用传递就是将变量保存的值所在的内存地址传递给另外一个变量,两个变量指向同一块内存空间(两个变量实质上是同一个值)
在解释上述两个概念前,先介绍一点有关计算机内存的知识:
在计算机内存中,通常有以下几个分区:
栈区:是指程序可以操作的内存部分,这一部分不存储数据,只运行程序代码,这部分内存相对很小但是运行速度极快。
代码段:是指存储程序的内存部分,但是该部分不执行程序。
数据段:是指存储普通数据的内存部分。
堆区:是指复杂数据的内存部分,内存空间相对很大,但是效率低。
好了,现在步入正题,从代码角度来看看值传递和引用传递的区别。
值传递
<?php
$a = 1;
$b = $a;
$b = 2;
echo "$a<br>";
echo "$b<br>";
?>
该段代码的运行结果是1和2。
我们来详细分析一下其内部的运行原理:
<?php
$a = 1;
$b = &$a;
$b = 2;
echo "$a<br>";
echo "$b<br>";
?>
该段代码的运行结果是2和2。
我们来详细分析一下其内部的运行原理:
因此在传递值的过程中一定要看清楚是值传递还是引用传递,这两种结果是不同的!