根据下面的php代码,输出为
1 . 1
2 . 2
3 . 3
我理解&$ref是通过引用传递的。但在赋值之后类似($row=&$ref;)在任何地方,每当“row”更改值时,“ref”也会更改为与“row”相同的值。真的很迷惑。似乎=不仅将右值赋给左值。有人能核实一下吗?
<?php
$ref = 0;
$row = &$ref;
foreach (array(1, 2, 3) as $row) {
print "$row . $ref \n" ;
}
echo $ref;
?>
在不深入研究技术细节的情况下,这里的基本思想是,您已经使$ref
成为对$row
的引用。具体而言,$row
位于某个内存地址。如果你做一个简单作业
$ref = $row;
则$ref
是$row
的副本。如果你改变了一个,它就不会改变另一个
$row = &$ref;
$ref
现在指向$row
。所以它们本质上是同一个变量。它们指向相同的内存位置(过于简化,所以您可以理解)。
$data = ['1', '2', '3'];
function modVal(Array &$arr) {
$arr[2] = '9';
}
modVal($data);
var_dump($data);
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "9"
}
但是,从函数声明中删除&
,输出变为
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
}
PHP有时会为您自动通过引用传递。例如,如果您实例化一个类并将该实例注入到函数中,它将自动通过引用传递。
本文向大家介绍PHP 通过引用分配,包括了PHP 通过引用分配的使用技巧和注意事项,需要的朋友参考一下 示例 这是引用的第一阶段。本质上,当您通过引用进行分配时,就是允许两个变量共享相同的值。 $foo和$bar是相等的在这里。他们没有指向对方。它们指向同一位置(“值”)。 您还可以在array()语言结构中通过引用进行分配。虽然不是严格按参考分配。 但是请注意,数组内部的引用具有潜在的危险。使用
本文向大家介绍PHP通过引用传递参数用法分析,包括了PHP通过引用传递参数用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP通过引用传递参数用法。分享给大家供大家参考,具体如下: 先看一个手册上的示例: 输出: 如果没有这个&符号, 输出: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数与技巧总结》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总
我有这两个函数,我试图修改元素。其中一个编译,另一个说“val不能重新分配”。以下函数有什么区别?为什么一个编译,另一个不编译? 编译的那个 那个说 无法重新分配Val
问题内容: 我刚遇到一个错误。 当我尝试分配这样的对象时: 我得到的错误是“不赞成通过引用分配new的返回值”。实际上,我一直在寻找解决方案,但是我唯一看到的就是拒绝php.ini的政策(error_reporting)。我也尝试过,但是没有用。 真令人困惑。希望您能帮助我。提前致谢。 问题答案: 在PHP5中,不赞成使用这种用法 您确定您没有在示例代码中漏号吗?这将生成您声明的警告,但是它不是必
问题内容: 我有以下代码: 有人可以解释为什么输出是:零一二二。 摘自zend认证学习指南。 问题答案: 因为在第二个循环中,仍然是对最后一个数组项的引用,所以每次都将其覆盖。 您可以看到这样的内容: 如您所见,最后一个数组项采用当前循环值:“零”,“一个”,“两个”,然后就是“两个” …:)
问题内容: 我想知道在您仅读取变量时是否将其作为按引用传递的优良作法,还是应始终将其作为值传递。 引用传递示例: 传递值的示例: 哪个更好 ?例如,如果我要循环运行1000次? 循环示例: 问题答案: 如果您打算传递一个 值 (因此该函数不会对其进行修改) ,则没有理由通过引用传递它:这只会使您的代码更难以理解,因为人们会认为“ 此函数可以修改我将要修改的内容。传递给它-哦,它没有修改? ” 在您