php - 在数组 var_dump 末尾添加 & 号

标签 php pointers reference

我写了一段教程代码,运行后遇到了一些很奇怪的事情。

我的 Chrome 扩展程序 Var Dumpling 没有看到数组中的最后一个条目,因为一个 & 号被附加到值的类型。

我用这段代码测试过:

$alphabet = array('a', 'b', 'c');

foreach ($alphabet as &$letter) {
  $letter .= 'a';
}

var_dump($alphabet);

var_dump 的结果是:

array(3) {
  [0]=>
  string(2) "aa"
  [1]=>
  string(2) "ba"
  [2]=>
  &string(2) "ca"
}

您可以看到最后一个条目是 &string(2) "ca" 而不是我期望的 string(2) "ca"。这在逻辑部分没有问题,我可以调用 $alphabet[2],它会返回最后一个条目 ca 的值。

我想知道的是,这个约定是 PHP 中的一些奇怪问题吗?

最佳答案

这表示一个变量是一个引用并且是完全有效的。在大多数情况下,忽略它并继续。

在这种特殊情况下,这可能意味着您的数组的最后一个元素仍在从您的 foreach 循环中引用。由于您在那里将其用作引用,并且循环关闭后循环中的最后一项仍然存在,因此该项目的引用仍然存在。 或者简而言之:

在你的循环之后,$letter 仍然是对 $alphabet[2] 的引用。 如果您unset($letter),该符号应该消失。

http://php.net/manual/en/language.references.php

关于php - 在数组 var_dump 末尾添加 & 号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26485462/

相关文章:

php - 在 mysql_query 中使用两个查询登录 php

php - 如何在ffmpeg中指定输出文件的路径?

php - 如何跨多个 php 文件共享一个实例 a-la-Wordpress?

c - 将二维数组传递给函数

java - 可以复制或引用的构造函数

php - jQuery 验证 submitHandler 不适用于 WP AJAX/wp_localize_script

c - 如何给指针赋值

C++,复制构造函数在字符数组中不能正常工作

c++ - 如何使用decltype获取没有引用的指针?

.net - 如何为解决方案中的所有项目引用一次程序集