$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)-- 作用域