探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
自 PHP 5 起,可以很容易地通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。
代码如下:
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>
此方法仅在被遍历的数组可以被引用时才可用(例如是个变量)。
代码如下:
<?php
foreach (array(1, 2, 3, 4) as &$value) {
$value = $value * 2;
}
?>
相关推荐
-
php中用foreach来操作数组的代码
foreach()有两种用法: 复制代码 代码如下: foreach(array_name as $value) { statement; } 这里的array_name是你要遍历的数组名,每次循环中,array_name数组的当前元素的值被赋给$value,并且数组内部的下标向下移一 步,也就是下次循环回得到下一个元素. 复制代码 代码如下: foreach(array_name as $key => $value) { statement; } 这里跟第一种方法的区别就是多了个$key,也就
-
深入解析php中的foreach问题
前言:php4中引入了foreach结构,这是一种遍历数组的简单方式.相比传统的for循环,foreach能够更加便捷的获取键值对.在php5之前,foreach仅能用于数组:php5之后,利用foreach还能遍历对象(详见:遍历对象).本文中仅讨论遍历数组的情况. foreach虽然简单,不过它可能会出现一些意外的行为,特别是代码涉及引用的情况下.下面列举了几种case,有助于我们进一步认清foreach的本质.问题1: 复制代码 代码如下: $arr = array(1,2,3);fore
-
PHP循环语句笔记(foreach,list)
一般foreach用的比较多 复制代码 代码如下: <?php $price=array('apple'=>10,'orange'=>20,'banner'=>30); foreach($price as $key=>$value) { echo $key.'=>'.$value.'<br>'; } echo '<br>'; ?> 还有个更高级和常见的方法 复制代码 代码如下: <?php $shuiguo=array('apple'
-
PHP中的函数-- foreach()的用法详解
PHP 4 引入了 foreach 结构,和 Perl 以及其他语言很像.这只是一种遍历数组简便方法.foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误.有两种语法,第二种比较次要但却是第一种的有用的扩展. 复制代码 代码如下: foreach (array_expression as $value) statementforeach (array_expression as $key => $value) statement 第一种格式遍历给
-
PHP中使用foreach和引用导致程序BUG的问题介绍
复制代码 代码如下: $a = array(1, 2); $b = array(11, 12); foreach($a as &$r){ } foreach($b as $r){ } echo $a[1]; // 输出 12 两个的循环的本意可能是: 第一个循环需要在循环中修改元素的内容, 所以使用引用; 但第二个循环只是把 $r 当作一个临时变量. 可是, 为什么 $a[1] 的值发生了改变呢? 当对 $a 的迭代完成后, $r 是 $a[1] 的引用, 改变 $r 的值, 就是改变 $a[1
-
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
复制代码 代码如下: $id = intval($_GET['id']); $row = $db->getResult($db->query("select * from ".$t."product where id=$id;")); $rows = $row[0];//处理mysql_fetch_assoc返回来的数组 不用foreach----echo!
-
php循环语句 for()与foreach()用法区别介绍
for 循环是 PHP 中最复杂的循环结构.它的行为和 C 语言的相似. for 循环的语法是: for (expr1; expr2; expr3) statement 第一个表达式(expr1)在循环开始前无条件求值一次. expr2 在每次循环开始前求值.如果值为 TRUE,则继续循环,执行嵌套的循环语句.如果值为 FALSE,则终止循环. expr3 在每次循环之后被求值(执行). 每个表达式都可以为空.expr2 为空意味着将无限循环下去(和 C 一样,PHP 认为其值为 TRUE).这
-
深入解析php中的foreach函数
Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息. 有两种语法: 复制代码 代码如下: foreach (array_expression as $value) statementforeach (array_expression as $key => $value) statement 例子1: 复制代码 代码如下: <?php$a
-
PHP中for与foreach的区别分析
注意: 除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身.因此数组指针不会被 each() 结构改变,对返回的数组单元的修改也不会影响原数组. 1. 自php5起,foreach 还可能遍历对象的属性. 2. 自php5起,foreach 可以很容易地通过在 $value 之前加上 & 来修改数组的单元,此方法将以引用赋值而不是拷贝一个值. 复制代码 代码如下: <?php $arr = array(1, 2, 3, 4); foreach ($arr as
-
PHP foreach循环使用详解与实例代码
foreach基本语法如下: FOREACH ($array_variable as $value) { [code to execute] } or FOREACH ($array_variable as $key => $value) { [code to execute] } 在这两种情况下,多次[代码执行]将被处死是等于在$ array_variable数组元素的个数. 让我们来看一个例子.假设我们有下面的代码段: 复制代码 代码如下: $array1 = array(1,2,3,4,5
-
php foreach 参数强制类型转换的问题
所以,为了防止这样的信息出现,我使用foreach的时候,都会把参数进行强制类型转换,形势如下: foreach((array)$arr as $key => $value); 这样做一直相安无事,就在前几天,突然出现了问题.我强制类型转换以后不能正常的调用object的方法了. 复制代码 代码如下: <?php class service implements Iterator{ function __construct($service_define,$filter=null){ $thi
-
PHP中foreach循环中使用引用要注意的地方
复制代码 代码如下: foreach ($array as &$row) { $row = explode('/', $row); } foreach ($array as $row) { //do something } 这么写,在第二个循环会出逻辑错误,加入第二个循环中do something的地方是输出$row,循环到最后一个的时候的输出是倒数第二个元素,而不是最后一个 要这么写 复制代码 代码如下: foreach ($array as &$row) { $row = explod
-
php中如何使对象可以像数组一样进行foreach循环
刚接触到题的时候,我也没有考虑到Iterator模式,试了几个一般想法,失败以后....就直接去翻看了foreach的源码实现,期望发现foreach处理对象的时候是否有什么特殊性,可以做为突破口. 跟踪了半天以后发现了核心逻辑中的一个奇怪的switch: 复制代码 代码如下: switch (zend_iterator_unwrap(array, &iter TSRMLS_CC)) { default: case ZEND_ITER_INVALID:
-
php foreach循环中使用引用的问题
看代码,再做解释 复制代码 代码如下: <?php $array=array('a','b','c','d'); foreach($array as $key=>$val){ //do something } echo $val;//输出d echo $kay;//输出3 $val='e'; print_r($array);//输出Array ( [0] => a [1] => b [2] => c [3] => d ) ?> 在foreach循环中,当循
随机推荐
- 如何让access自动编号从1开始排序实现方法
- 浅谈几种常用的JS类定义方法
- springmvc使用JSR-303进行数据校验实例
- Java 使用json-lib处理JSON详解及实例代码
- oracle数据库创建备份与恢复脚本整理
- python魔法方法-自定义序列详解
- ASP.NET MVC5验证系列之Fluent Validation
- php简单防盗链验证实现方法 原创
- 大数量查询分页显示 微软的解决办法
- 详解C# Socket简单例子(服务器与客户端通信)
- C++版本简易Flappy bird
- 解决MySQL5.1安装时出现Cannot create windows service for mysql.error:0
- 使用nginx+tomcat实现静态和动态页面的分离
- jquery实现公告翻滚效果
- JavaScript-html标题滚动效果的简单实现
- Java的Struts框架中登陆功能的实现和表单处理器的使用
- Android中imageView图片放大缩小及旋转功能示例代码
- 在ASP.NET 2.0中操作数据之二十二:为删除数据添加客户端确认
- C#泛型与非泛型性能比较的实例
- android listview的多列模版实例代码