当前位置: 首页 > 面试题库 >

PHP在foreach中通过引用传递

赵渊
2023-03-14
问题内容

我有以下代码:

$a = array ('zero','one','two', 'three');

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.PHP_EOL;
}

有人可以解释为什么输出是:零一二二。

摘自zend认证学习指南。


问题答案:

因为在第二个循环中,$v仍然是对最后一个数组项的引用,所以每次都将其覆盖。

您可以看到这样的内容:

$a = array ('zero','one','two', 'three');

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.'-'.$a[3].PHP_EOL;
}

如您所见,最后一个数组项采用当前循环值:“零”,“一个”,“两个”,然后就是“两个” …:)



 类似资料:
  • 问题内容: 我想知道在您仅读取变量时是否将其作为按引用传递的优良作法,还是应始终将其作为值传递。 引用传递示例: 传递值的示例: 哪个更好 ?例如,如果我要循环运行1000次? 循环示例: 问题答案: 如果您打算传递一个 值 (因此该函数不会对其进行修改) ,则没有理由通过引用传递它:这只会使您的代码更难以理解,因为人们会认为“ 此函数可以修改我将要修改的内容。传递给它-哦,它没有修改? ” 在您

  • 问题内容: 在PHP 5中,是否需要使用修饰符通过引用传递?例如, 在PHP4中,您需要使用修饰符在进行更改后保持引用,但是我对已阅读的有关PHP5自动使用传递引用的主题感到困惑,除非明确克隆对象。 在PHP5中,是否 需要通过修饰符来通过引用传递所有类型的对象(变量,类,数组等)? 问题答案: 您是否需要使用&修饰符来传递引用? 从技术上/意义上讲,即使有对象,答案也是 肯定的 。这是因为有两种

  • 问题内容: 在PHP中,可以通过在函数声明中的参数前面加上“&”号来通过引用传递函数参数,如下所示: 现在,我知道这 不是 为了提高性能 而 设计的,而是允许函数更改通常不在其范围内的变量。 取而代之的是,PHP似乎使用写时复制来避免在对象被更改之前复制对象(也许还有数组)。因此,对于不更改其参数的函数,效果应与您通过引用传递它们的效果相同。 但是,我想知道写时复制逻辑是否可能在传递引用时短路,并

  • 问题内容: 如何在Python中通过引用传递整数? 我想修改传递给函数的变量的值。我读过Python中的所有内容都是按值传递的,但是必须有一个简单的技巧。例如,在Java中,你可以通过引用类型的,等等。 如何通过引用将整数传递给函数? 最佳做法是什么? 问题答案: 在Python中,这种方式不太有效。Python将引用传递给对象。在函数内部,你有一个对象-你可以随意更改该对象(如果可能)。但是,整

  • 问题内容: 有人可以告诉我这个RMI聊天应用程序为什么不能正常工作的地方,目的是通过远程对象或序列化对象实现客户端,服务器和逻辑之间的分离。 我想用作业务逻辑(游戏逻辑)的对象。 其实现: 管理客户端线程的类 Service.java:服务器将要注册并绑定到的对象。 ServerServicesImpl.java:服务器的实现端 问题答案: 正如 Ernest Friedman-Hill 在链接文

  • 问题内容: 如何在JavaScript中通过引用传递变量?我要对3个变量执行一些操作,因此我想将它们放在for循环中并对每个变量执行操作。 伪代码: 做这个的最好方式是什么? 问题答案: JavaScript中没有可用的“通过引用传递”。您可以传递一个对象(也就是说,您可以按值传递对一个对象的引用),然后让一个函数修改该对象的内容: 您可以使用数字索引遍历数组的属性,并根据需要修改数组的每个单元格