本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:

Reference - What does this symbol mean in PHP?

我需要知道为什么在foreach循环中的变量之前使用和号

foreach ($wishdets as $wishes => &$wishesarray) {

foreach ($wishesarray as $categories => &$categoriesarray) {

}

}

很重要的一点是,循环变量被泄漏到循环范围之外(因为PHP没有块范围,为了让事情更有趣)。因此,如果您稍后分配给循环变量,则会损坏数组。即使在另一个循环中将其用作循环变量,也可能发生这种情况,从而导致非常"有趣"的错误。解决方案是在循环之后取消设置循环变量()。

这个例子将向您展示不同之处

$array = array(1, 2);

foreach ($array as $value) {

$value++;

}

print_r($array); // 1, 2 because we iterated over copy of value

foreach ($array as &$value) {

$value++;

}

print_r($array); // 2, 3 because we iterated over references to actual values of array

在这里查看php文档:http://pl.php.net/manual/en/control-structures.foreach.php

引用语法是否经常导致错误,如:"无法创建对字符串偏移量的引用"?

这意味着它是通过引用传递的,而不是通过值传递的…即对变量的任何操作都会影响原始变量。这与任何修改都不会影响原始对象的值不同。

在StackOverflow上会多次询问此问题。

要添加,"by reference"表示它指的是为被引用的变量分配的相同内存块。

与"按值"相反,这意味着变量的副本是由PHP在新的内存块中创建的。

有两种方法可以在问题示例代码中传递引用,我概述了这两种方法。

如果你知道"StackOverflow上有很多次这样的问题",那你为什么要回答呢?找到一个合适的副本,并作为评论提供(或在达到3K后关闭投票)

它用于将数组的单个实例中的更改应用于主数组。

AS:

//现在更改不会影响数组$wishesarray

foreach ($wishesarray as $id => $categoriy) {

$categoriy++;

}

print_r($wishesarray); //It'll same as before..

但现在的变化也会反映在$wishesarray数组中。

foreach ($wishesarray as $id => &$categoriy) {

$categoriy++;

}

print_r($wishesarray); //It'll have values all increased by one..

对于问题中的代码,不能给出特定的答案,因为foreach内部循环是空的。

我在代码中看到的是,内部foreach迭代引用,而不是普通的方式。

我建议您阅读一下foreachphp手册页,它涵盖了所有四种情况:

foreach($standard as $each);

foreach($standard as &$each); # this is used in your question

$reference = &$standard;

foreach($reference as $each);

$reference = &$standard;

foreach($reference as &$each); # this is used in your question

php foreach 符号,关于php:php-foreach循环中变量之前的符号相关推荐

  1. php正则判断是否包特殊符号,正则表达式(RegExp)判断文本框中是否包含特殊符号...

    前言 有时,我们希望判断文本框中用户输入的字符是否含有特殊符号(*/#$@),就像用户注册时密码框的填写. demo 利用 RegExp 对象,能很优雅的实现以上需求: // even(文本框内容) ...

  2. c语言编程符号函数sgn,在C/C中是否有标准符号函数(signum,sgn)?

    惊讶没有人发布无分支,类型安全的C版本: template int sgn(T val) { return (T(0) < val) - (val < T(0)); } 优点: >实 ...

  3. 计算机中符号位正负,负数在计算机中的表示+有符号无符号的区别+负数按位运算...

    部分转载自:https://blog.csdn.net/kebi007/article/details/89741960 一.负数的二进制位表示法 原码:一个整数按照绝对值的大小转换成的二进制数,称为 ...

  4. html页面中常见的特殊符号,收集的web页面html中常用的特殊符号大全分享

    *特殊符号:·⊙①⊕◎Θ⊙*○¤㊣㈱@の*□*☆** ▲△▼▽⊿ ▂ ▃ ▄ ▆ * * ▉ ▊▋▌▍▎▏* 回 □ **≡ ↑↓→←↘↙♀♂┇┅|$ @ * & # ※ 卍 卐 ∞Ψ §∮ ...

  5. linux sed 替换符号,linux sed 批量替换文件中的字符串或符号

    BLE 蓝牙协议栈开发 1.由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(1) 2.由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(2) 3.由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(3) 关 ...

  6. PHP for循环中的sql语句,php – 在foreach循环中使用SQL结果

    我觉得我错过了一些愚蠢明显的东西,我试图获得SQL查询的结果,然后在循环中使用它们.我觉得我错过了一些愚蠢明显的东西,我已经尝试过,有没有注释掉的线. $sentToID = $_SESSION['u ...

  7. php的foreach循环执行过程分析以及循环中执行unset()的一些问题

    文章目录 一.前言 二.foreach的执行过程 1.关于版本不同的foreach变化 2.关于引用计数 3.探寻foreach的运行过程 三.foreach中执行unset()的问题 1.当我们是为 ...

  8. foreach输出mysql方法_mysql – “foreach”循环:使用R中的所有核心(特别是如果我们在foreach循环中发送sql查询)...

    我打算用"foreach"来uitlize我的CPU中的所有核心.我需要在循环中发送一个sql查询.该脚本在正常的'for'循环中工作正常,但是当我将其更改为'foreach'时它 ...

  9. 在Java中的foreach循环中调用remove

    本文翻译自:Calling remove in foreach loop in Java [duplicate] This question already has an answer here: 这 ...

最新文章

  1. Python的设计定位
  2. 论强化学习的根本缺陷
  3. SVN使用教程之——分支、合并
  4. 蓝桥分酒java_[蓝桥杯][java]海盗分酒
  5. python新手教程 从零开始-让你从零开始学会写爬虫的5个教程(Python)
  6. 4.1.2 OS之文件逻辑结构(顺序文件、索引文件、索引顺序文件、多级索引顺序文件)关于数据库的索引如聚簇索引可以看一下索引文件例题的解析,感觉还是可以收获到东西的
  7. linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...
  8. 再谈要不要成为全栈工程师
  9. 什么情况下需要创建MySQL索引
  10. java获取客服列表,java-从列表中获取处理案例的服务
  11. matlab估计arma残差,python ARIMA 时间序列
  12. 装机经验-某些服务器安装系统困难,需要BIOS设置
  13. C#访问MySQL数据库帮助类
  14. bugku-web-滑稽
  15. 如何测量智能产品的AI智商水平,论AI的三种智商
  16. Linux python 虚拟环境搭建与配置
  17. Redis 实例:开发一个Spring Redis应用程序
  18. 【应用C】C语言实现离散数学合式公式的递归判断
  19. 【DeeplabV3+ MIoU】DeeplabV3+计算评价指标
  20. python安装和学习-最后推荐winpython

热门文章

  1. SAP Hybris和ABAP Netweaver里的DAO(Data access object)
  2. 基于WebSocket的手机应用和浏览器应用的数据传递
  3. CRM WebClient UI错误消息的两种显示方式比较
  4. Workflow Administration
  5. 如何把word文档转换成markdown格式
  6. SAP Cloud for Customer Sales Order Pricing Date的配置
  7. Netweaver的传输机制和SAP Cloud for Customer
  8. 如何处理CloudFoundry应用部署时遇到的254错误
  9. mysql5.1修改登陆密码_mysql 5.1版本修改密码及远程登录mysql数据库的方法
  10. 北京林业大c语言程序设计考试试题,2020年南京林业大学2017考研真题考研真题试卷及试题答案,C程序设计考研试题下载...