浅谈PHP中foreach/in_array的使用
发布:smiling 来源: PHP粉丝网 添加日期:2021-06-23 22:22:57 浏览: 评论:0
本文给大家简单总结了一下PHP中foreach以及in_array的使用,包括在使用中常遇到的问题等信息,非常的实用,有需要的小伙伴可以参考下。
php在开发效率很高,这是无可厚非的,但是却是在牺牲执行效率的。php数组功能非常强大,但是也要多加考虑,多试几种情况情况,以防万一,这里,我就简单的说两个遇到的坑,以后如果有发现更多的,再补上吧!
foreach 提供了遍历数组的简单方式,可以很方便的读取到数据或对象的内容,但是官方文档说了,由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。所以,基本上,
1、不要想在循环内部修改里面的值,否则结果将超出你想要的;
2、使用'&'是一个安全的方式,虽然很少用到,但是在用到时,在引用结束后,应立即调用unset函数销毁该变量,否则,在接下来的代码里,如果有再次使用到此变量,那么循环的最后一次值就将被修改了,从而得到了意外的值,比如:在列表循环输出时,最后一行输出将会出现许多乱七八糟的值或者空值。使用unset可解决此问题。
我们来看个示例
- <?php
- /*-------------------------------------------------------------------------*/
- /* foreach example 1: value only */
- echo "foreach example 1: value only ".'<br />';
- $a = array(1, 2, 3, 17);
- foreach ($a as $v) {
- echo "Current value of ".$a.":". $v."<br />";
- }
- ?>
- // 运行结果
- foreach example 1: value only
- Current value of $a: 1
- Current value of $a: 2
- Current value of $a: 3
- Current value of $a: 17
in_array,其含义是检查前一个字符串是否存在于后一个数组当中,而且大多数情况下,它也是这么工作的,但是当后面的数组是整数时,如array(0,1,2,3)时,就出问题了,php会将前的字符串进行intval,从而都会得到0这个值,那么如果恰巧,你的数组当中有这个值,那么等式就成立了,是不是又超出了预期呢?
所以,当确定后面的数据是整数时,尤其是还有可能为0(这个可能代替所有的字符串了),你就千万不能再使用这个函数了,可使用key_exists来代替,但是后面的数据则需要使用array_flip进行倒转操作了。
我们再来看个示例:
- function search($keyWord, $stack) {//此处判断是应该更新还是插入
- foreach ($stack as $key => $val) {
- if (in_array($keyWord, $val)) {
- return TRUE;
- }
- }
- return FALSE;
- }
当一个字符串被当作数组来去取值时,又会发生什么呢?php是一门容错性很强的语言,它会尽量帮你改正错误,所以很聪明地将你的引用下标转化为整数,当然就得到0了,那么字符串下标为0取值则又会得到第一个字符串的值,是不是又超出了你的预期呢?解决方法是,在引用下标之前,还是确认一下这个变量是不是一个数组吧,is_array。
虽然有许许多多的前辈遇到这样或那样的问题,也在不停地说,但是我们终究还是免不了,不停去犯错。这也许就是社会吧!大家都这么忙,哪有时间去破解你那烂代码! 哈哈
Tags: foreach in_array
相关文章
- ·php分割字符串并循环输出(2014-03-13)
- ·php foreach 传值还是传引用(2014-09-13)
- ·PHP中for循环与foreach的区别(2018-08-06)
- ·foreach用法是什么?(2020-01-10)
- ·[PHP] foreach循环的引用赋值中出现的问题(2020-02-22)
- ·PHP学习之foreach循环时加&符号的说明(2020-03-05)
- ·php foreach循环中使用引用的问题(2020-05-16)
- ·PHP中foreach()用法汇总(2021-06-07)
- ·PHP关于foreach复制知识点总结(2021-11-06)
- ·PHP中in_array的隐式转换的解决方法(2021-09-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)