PHP与JavaScript:改变传入数组的值会产生不同的结果
PHP vs JavaScript: Altering the value of an array passed in gives different results
为这篇文章想出一个明智的标题是非常困难的。
虽然PHP和JS是完全不同的语言,但我很惊讶地发现,改变作为参数传递给函数的数组会产生不同的结果。
PHP<?php
function thing($arr) {
$arr[2] = "WOOF";
}
$hello = array(1,2,3,4);
thing($hello);
print_r($hello);
// Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
?>
Javascript function thing($arr) {
$arr[2] = "WOOF";
}
$hello = [1,2,3,4];
thing($hello);
console.log($hello);
// [1, 2, "WOOF", 4]
哪个是"正确的"?
为什么这里的结果不同?为什么JS接受参数只是原始数组的别名,而PHP不接受?
哪一种方式是最"正确"的——为什么?
在javascript对象是通过引用传递的,所以你得到这样的结果,所以说,这两个结果都是真实的在自己的领域。
你也可以通过控制台试试。
>>> var s = [1,2,3,4];
undefined
>>> var b = s;
undefined
>>> b;
[1, 2, 3, 4]
>>> s;
[1, 2, 3, 4]
>>> b[2] = "data";
"data"
>>> b;
[1, 2, "data", 4]
>>> s;
[1, 2, "data", 4]
在php中你给函数值"$arr",在JS中-对象"$arr"
<?php
function thing($arr) {
$arr[2] = "WOOF";
return ($arr);
}
$hello = array(1,2,3,4);
$hello=thing($hello);
print_r($hello);
// Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
?>
相关文章:
- 如何实现基于两个数组创建结果数组的逻辑
- 无法获取所需的结果数组
- 动态结果数组需要使用 Angular JS 与不同布局的表绑定
- 如何从谷歌地图API返回的结果数组中提取城市名称
- 如何查询具有特定 id 的 json 文件并获取结果数组
- 如何将谷歌放置 API 结果数组与淘汰赛集成
- 是否保证 document.querySelectorAll(“input[type=checkbox”) 的结果数组的
- 如何使用 Parse.promise javascript 定义一个承诺数组并获取结果数组 [parse.com]
- HTML5 语音 API - 重置结果数组
- 如何访问在 ajax 中返回的结果数组
- 输出一个结果数组,其中包含给定数组的唯一元素的分组计数
- Javascript返回基于日期的平均测试结果数组
- NodeJS ExpressJS如何打印API结果数组
- 在添加到结果数组之前,请检查值是否存在
- 为什么String.match在结果数组中返回重复项
- 如何合并两个只有唯一或不同值的复杂JSON对象,这些值只显示在结果数组中
- Javascript -根据字符拆分字符串,但将其保留在结果数组中
- Javascript, array concat将Windows Object添加到结果数组中,但它不适用于Firefo
- 如何分割正则表达式空间和标点匹配,但保留结果数组中的标点符号
- 尝试从json树状结构JavaScript递归创建一个结果数组