class="php" name="code">
$a = [1,3];
function change_arr($arr) {
$arr[0] = 200;
}
change_arr($a);
var_dump($a);
php打印结果如下:
array(2) {
[0]=>
int(1)
[1]=>
int(3)
}
也就是说,php并没有改变原有的实际参数。
如果想改变,有两种方法,
第一种,改变函数定义
$a = [1,3];
function change_arr(&$arr) { // 只有这里加一个传引用符号
$arr[0] = 200;
}
change_arr($a);
var_dump($a);
第2种:用返回值
$a = [1,3];
function change_arr($arr) {
$arr[0] = 200;
return $arr;
}
$a = change_arr($a);
var_dump($a);
上面这两种写法,都会导致改变。
结果如下:
array(2) {
[0]=>
int(200)
[1]=>
int(3)
}
===================================================================
===================================================================
这里开始node
var arr=[1,3];
function change_arr(arr2){
arr2[0] = 200;
}
change_arr(arr);
arr.map((n)=>{
console.log(n);
})
好家伙,直接修改实参。
下面是打印结果
200
3
所以node编程得小心~
前文链接:
php和node的差异(1)-- 作用域