PHP 中引用类型和值类型在变量赋值和函数传参时有着不同的行为,这里提供以下攻略:
引用类型和值类型的定义
值类型(也称为基本类型)在 PHP 中包括整数、浮点数、布尔值和字符串,以及常量和 NULL 值。当把一个值类型变量赋给另一个变量时,实际上是把变量的值复制了一份。例如:
$num1 = 42;
$num2 = $num1;
$num2 = 99;
echo $num1; // 输出 42
echo $num2; // 输出 99
引用类型是指在 PHP 中由 class 或 array 这样的复合类型所创建的变量。当把一个引用类型变量赋给另一个变量时,实际上是把这份变量在内存中的地址引用传递给了新变量,两个变量最终指向同一个地址。例如:
$array1 = [1, 2, 3];
$array2 = &$array1;
$array2[1] = 99;
print_r($array1); // 输出 Array ( [0] => 1 [1] => 99 [2] => 3 )
print_r($array2); // 输出 Array ( [0] => 1 [1] => 99 [2] => 3 )
值类型和引用类型在函数传参时的区别
当调用一个函数并把一个值类型变量作为参数传递时,函数接收到的实际是这个变量的一份拷贝,所以在函数内部对源变量的改变不会影响到函数外的变量。例如:
function changeNum($num) {
$num = 42;
}
$num1 = 99;
changeNum($num1);
echo $num1; // 输出 99
而当把一个引用类型变量作为参数传递给函数时,传递的不再是一份复制,而是源变量在内存中的地址引用。因此在函数内部对这个引用变量作的修改会同步体现在函数外的变量上。例如:
function addToArray($array, $value) {
$array[] = $value;
}
$array1 = [1, 2, 3];
addToArray($array1, 4);
print_r($array1); // 输出 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
引用类型的应用示例
除了上面提供的例子,还有其他很多情况下可以使用引用类型:
- 修改循环中的元素:对数组元素的处理,使用引用类型能够简化处理步骤:
php
$arr = [1,2,3,4];
foreach($arr as &$num) {
$num *= 2;
}
print_r($arr); // 输出 Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
- 修改函数外部的变量:可以在函数内部对函数外部的变量进行修改。
php
$number = 10;
function increaseNumber(&$num) {
$num += 10;
}
increaseNumber($number);
echo $number; // 输出 20
以上就是 PHP 中引用类型和值类型功能与用法示例的详细攻略。希望可以帮助你更好地理解 PHP 中变量类型的不同特点。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP中引用类型和值类型功能与用法示例 - Python技术站