php foreach
2016-06-16 11:17
148 查看
在PHP开发中,我们经常会迭代一个数组,并且修改其中的元素的值,如果我们有其它语言的经验,那么这里我们很可能就会出错。
就拿java来说,因为我对java还是比较熟悉的,在java中我们迭代一个数组,并修改其值,我们会采用如下方法:
上面的代码没问题,一切都按照我们期望的来。直到我到了PHP,这几天在做一个小项目,结果发现使用和上面类似的方法修改了元素的值,竟然不起作用!使用的代码如下:
我发现输出出来的竟然是未修改之前的!
经过一番调试之后,最后猜想是不是上面的代码传的是值,而不是引用。于是去官网查看文档,发现竟然真的是这样,于是我修改代码成下面这样:
参考资料:
PHP官网对foreach的解释:http://php.net/manual/en/control-structures.foreach.php
更多干货,请关注微信公众号:开发and生活
就拿java来说,因为我对java还是比较熟悉的,在java中我们迭代一个数组,并修改其值,我们会采用如下方法:
<span> </span>for(Object item : objectArray){ <span> </span>item.setAttribute('value'); <span> </span>}
上面的代码没问题,一切都按照我们期望的来。直到我到了PHP,这几天在做一个小项目,结果发现使用和上面类似的方法修改了元素的值,竟然不起作用!使用的代码如下:
foreach($arrays as $item){ $item->name = 'value'; } echo $arrays[0]->name;
我发现输出出来的竟然是未修改之前的!
经过一番调试之后,最后猜想是不是上面的代码传的是值,而不是引用。于是去官网查看文档,发现竟然真的是这样,于是我修改代码成下面这样:
foreach($arrays as &$item){ $item->name = 'value'; } echo $arrays[0]->name;或者是这样:
foreach($arrays as $key=>$item){ $arrays[$key]->name = 'value'; } echo $arrays[0]->name;这两种方法运行结果都OK。于是,觉得官方文档应该多读读。当初只是大体过了一遍,并没有真正读透,就开始做项目。
参考资料:
PHP官网对foreach的解释:http://php.net/manual/en/control-structures.foreach.php
更多干货,请关注微信公众号:开发and生活
相关文章推荐
- phpexcel 不确定结束单元格的导出并循环
- 【php中的curl】php中curl的详细解说
- Sorting File Contents and Output with sort
- php zip打包下载文件
- 关于ftp下显示的时间和系统时间不一致的解决方法
- PHP用substr截取字符串出现中文乱码问题用mb_substr
- PHP 中的特殊方法
- mhash、mcrypt、PHP安装
- Yii2 打印sql语句和批量插入数据
- 获取汉字拼音
- getsockname函数与getpeername函数的使用
- wincachegrind配合Xdebug优化php 程序
- php无限极分类
- 蓝牙 AVCTP 剖析
- 每日一命令(10)cat (concatenate files and print on the standard output)
- 关于fragmentPagerAdapter的冲突问题
- PHPStorm显示代码行号设置
- [YII2] 自定义组件,在YII框架中正常使用
- TFTP配置
- php 访问对象的属性(当属性的键名称为数字时)的方法 {}