传值:当使用传值的方式时,函数或方法会创建原始变量的一个副本,并将该副本传递给函数或方法。在函数或方法内部,对副本的任何修改都不会影响到原始变量。当函数或方法执行完毕后,副本被销毁,不再使用。
传引用:当使用传引用的方式时,函数或方法会传递原始变量的引用(内存地址)。这意味着在函数或方法内部对原始变量的任何修改都会直接反映在原始变量上。当函数或方法执行完毕后,原始变量仍然存在,并保留了在函数或方法内部所做的修改
选择传值还是传引用时
- 传值适用于不需要修改原始变量的情况,或者原始变量是大型数组或对象时,以避免内存消耗。
- 传值可以确保函数或方法的独立性,不会对其他代码产生意外的副作用。
- 传引用适用于需要修改原始变量的情况,以避免创建副本和消耗额外的内存。 通常情况下,当函数或方法需要修改输入参数的值时,更倾向于使用传引用。但是,应该谨慎使用传引用,因为它可能导致代码难以理解和维护,以及不受控制的副作用。
代码案例
// 值传递示例
function square($num) {
$num = $num * $num;
echo "在函数内部:$num <br>";
}
$number = 5;
echo "函数调用前:$number <br>";
square($number);
echo "函数调用后:$number <br>";
// 引用传递示例
function increment(&$num) {
$num++;
echo "在函数内部:$num <br>";
}
$number = 5;
echo "函数调用前:$number <br>";
increment($number);
echo "函数调用后:$number <br>";