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循环中,当循环结束后,$key和$val变量都不会自动释放掉。值会被保留下来。
当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] => e )
?>
当$val变量使用&引用后,当执行foreach循环结束后,$val指向了和$arrar[3]相同的内存地址。
当foreach循环结束后$val变量还是存在的,所以在foreach循环结束后改变$val的值,就相当于改变了$arrar[3]的值。
相关推荐
-
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
本文实例讲述了php下foreach()错误提示Warning: Invalid argument supplied for foreach() 的解决方法.分享给大家供大家参考.具体实现方法如下: 一.问题: php下foreach()错误提示Warning: Invalid argument supplied for foreach() 错误提示:Warning: Invalid argument supplied for foreach() in E:wampwwwmyshopcart.p
-
php foreach正序倒序输出示例代码
实现代码: // 正序 foreach($files as $file_num => $file) { if(is_file($directory.$file)){ //$file = iconv("gb2312","UTF-8",$file); //或者 iconv("gb2312","UTF-8",$value); $date = substr($file,0,9); echo '<li class="
-
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
本文实例讲述了php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法.分享给大家供大家参考.具体如下: ZipArchive是php自带的一个压缩与解压缩函数了,今天理所当然的情况中使用new ZipArchive来创建zip文件时碰到提示Fatal error: Class ZipArchive not found in错误,感兴趣的朋友就一起来看看解决方法. 测试代码如下: 复制代码 代码如下: //PHP解压缩文件(
-
深入解析php中的foreach问题
前言:php4中引入了foreach结构,这是一种遍历数组的简单方式.相比传统的for循环,foreach能够更加便捷的获取键值对.在php5之前,foreach仅能用于数组:php5之后,利用foreach还能遍历对象(详见:遍历对象).本文中仅讨论遍历数组的情况. foreach虽然简单,不过它可能会出现一些意外的行为,特别是代码涉及引用的情况下.下面列举了几种case,有助于我们进一步认清foreach的本质.问题1: 复制代码 代码如下: $arr = array(1,2,3);fore
-
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
今天在测试以下代码时遇到该错误: 复制代码 代码如下: session_start(); $_SESSION['username']=$username; echo "<script language='javascript'>location.href='../admin.php';</script>"; exit(); 出现错误: 复制代码 代码如下: Warning: Cannot modify header information - headers a
-
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
本文实例讲述了thinkphp视图模型查询失败提示:ERR: 1146:Table 'db.pr_order_view' doesn't exist解决办法.分享给大家供大家参考.具体方法如下: 一.问题描述: 想用thinkphp的视图模型进行关联查询,结果出现了这样的问题(log日志记录):ERR: 1146:Table 'db.pr_order_view' doesn't exist,我就纳闷,视图模型怎么出来的sql是这样的呢,视图模型如下: 复制代码 代码如下: class Order
-
PHP中多维数组的foreach遍历示例
复制代码 代码如下: <?php //声明一个三维数组 $info=array( "user"=>array( array(1,"zhangsan",20,"nan"), array(2,"lisi",20,"nan"), array(3,"wangwu",25,"nv") ), "score"=>array( array(1,1
-
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
今天在新服上安装php imagick, 环境如下: php 5.4.13 ImageMagick-6.8.3-10 imagick-3.0.1 可是出错了一个问题.就是死说找不到MagickWand.h: checking for MagickWand.h header file... configure: error: Cannot locate header file MagickWand.h 可是我明明正确安装了ImageMagick的呀.GOOGLE了半天,也解决不了这个问题.后面对照
-
PHP的foreach中使用引用时需要注意的一个问题和解决方法
一.问题先看一个例子: <?php$ar = array(1, 2, 3);var_dump($ar);foreach ($ar as &$v) {}foreach ($ar as $v) {}var_dump($ar);?>输出为: array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}array(3) { [0]=> int(1) [1]=> int(2) [2]=> &
-
PHP has encountered a Stack overflow问题解决方法
昨晚将一个disucz论坛进行转移后,发现打开的页面上回多一个PHP has encountered a Stack overflow 这个提示错误,进过翻译为"PHP遇到堆栈溢出".我就感觉奇怪了,新站没人访问的,怎么可能会溢出. 好吧去discuz官方论坛找找解决方法. 找到的第一解决方法,更新后台缓存,结果不行.接下来检查数据库配置文件,也没有错误.检查php权限也没有错误. discuz官网有人说是php版本太低了,个人对于这种人是比较反感的,这种说法比较扯淡.不用去验证了.
-
php中如何使对象可以像数组一样进行foreach循环
刚接触到题的时候,我也没有考虑到Iterator模式,试了几个一般想法,失败以后....就直接去翻看了foreach的源码实现,期望发现foreach处理对象的时候是否有什么特殊性,可以做为突破口. 跟踪了半天以后发现了核心逻辑中的一个奇怪的switch: 复制代码 代码如下: switch (zend_iterator_unwrap(array, &iter TSRMLS_CC)) { default: case ZEND_ITER_INVALID:
-
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
本文实例讲述了ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法.分享给大家供大家参考.具体如下: 一.问题描述: ThinkPHP做文字水印 ,今天做一个电子请帖,就把祝福语贴到图片上面,发现一直报错是取不到图片类型,比如gif,jpg等,并提示call an undefined function exif_imagetype(). 二.解决方法: 出现这个错误就是php.in 配置问题,打开即可:打开扩展 exten
随机推荐
- AngulaJS路由 ui-router 传参实例
- java提高篇(二三)-----HashMap详解
- 通过代理类实现java连接数据库(使用dao层操作数据)实例分享
- Yii2中关联查询简单用法示例
- python使用marshal模块序列化实例
- 远程连接mysql错误代码1130的解决方法
- PHP实现RSA签名生成订单功能【支付宝示例】
- java webservice上传下载文件代码分享
- javascript 拖动_cookie_ajax等
- SQL Server误区30日谈 第10天 数据库镜像在故障发生后 马上就能发现
- 分享十五个最佳jQuery 幻灯插件和教程
- 不定义JQuery插件 不要说会JQuery
- jquery 简单应用示例总结
- JavaScript File API文件上传预览
- C# Windows API应用之基于FlashWindowEx实现窗口闪烁的方法
- Android项目实战之仿网易新闻的页面(RecyclerView )
- Popup对象实现右键菜单
- C# 设计模式系列教程-桥接模式
- PHP中比较时间大小实例
- ASP 多关键词查询实例代码