PHP的foreach中使用地址注意
简介对于一个PHPer来说,经常使用foreach,但是一般都循环一次,今天一个同事偏偏使用了两次foreach,第一次里面使用了地址符号,第二次循环又使用了同一个变量,这就造成了最后结果上出现问题。
直接上代码:
<?php
$list = ["a"=>1,"b"=>2,"c"=>3,"d"=>4];
foreach($list as &$item){
$item = $item+1;//为每个值加1
}
foreach($list as $item){
echo $item.PHP_EOL;
}
根据上面这段代码,大家可以先猜想下,这里打印的结果是多少呢?是2,3,4,5吗?这样问肯定不是,那么是多少呢?结果如下
[root@localhost root]# php test.php 2 3 4 4
为什么是这个结果呢?其实这里有一个问题需要注意:第一个循环使用了地址符,第二个循环又使用了第一个循环中的变量,所以造成了这种情况。
出现这样问题的分析:
- 第一个循环中item使用的是地址,第一个循环完后,那么地址刚好指向的是list的d这个下标上;
- 第二个循环又使用了item变量,每次遍历都会将item的值进行修改,这样就造成了$list[“d”]的值一直被修改;
<?php
$list = ["a"=>1,"b"=>2,"c"=>3,"d"=>4];
foreach($list as &$item){
$item = $item+1;
}
foreach($list as $item){
echo $item.'='.$list['d'].PHP_EOL;
}
结果如下:
[root@localhost root]# php test.php 2=2 3=3 4=4 4=4
到这里大家应该明白了吧!那么这种情况如何解决了,就是在第一个循环完成后,unset掉$item。
最近关注流媒体服务器来做网络直播,本想使用阿里云的流媒体服务器,由于费用的问题还是想能否自己搭建一个流媒体服务器供自己测试使用。果不其然,Nginx居然如此强大,可以用来做流媒体服务器。本文将具体介绍流媒体服务器的搭建过程和使用过程。
nodejs中使用npm和yarn,使用最新阿里云镜像 aliyun mirror,网上很多还是文章用的是下面这个地址~~yarn config set registry https://registry.npm.taobao.org~~
《康熙王朝》是一部非常优秀的电视连续剧,陈道明演的康熙是我觉得最有帝王气魄,让人意犹未尽,本文主要记录一小段非常经典的对白。
为了实现能定时修改桌面背景,又不想使用其他的软件,所以自己就通过了Python实现了更换桌面背景的程序,后期通过执行定时任务来修改自己的桌面背景。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。