php在开发效率很高,这是无可厚非的,但是却是在牺牲执行效率的。php数组功能非常强大,但是也要多加考虑,多试几种情况情况,以防万一,这里,我就简单的说两个遇到的坑,以后如果有发现更多的,再补上吧!

  foreach 提供了遍历数组的简单方式,可以很方便的读取到数据或对象的内容,但是官方文档说了,由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。所以,基本上,1、不要想在循环内部修改里面的值,否则结果将超出你想要的;2、使用'&'是一个安全的方式,虽然很少用到,但是在用到时,在引用结束后,应立即调用unset函数销毁该变量,否则,在接下来的代码里,如果有再次使用到此变量,那么循环的最后一次值就将被修改了,从而得到了意外的值,比如:在列表循环输出时,最后一行输出将会出现许多乱七八糟的值或者空值。使用unset可解决此问题。

  in_array,其含义是检查前一个字符串是否存在于后一个数组当中,而且大多数情况下,它也是这么工作的,但是当后面的数组是整数时,如array(0,1,2,3)时,就出问题了,php会将前的字符串进行intval,从而都会得到0这个值,那么如果恰巧,你的数组当中有这个值,那么等式就成立了,是不是又超出了预期呢?所以,当确定后面的数据是整数时,尤其是还有可能为0(这个可能代替所有的字符串了),你就千万不能再使用这个函数了,可使用key_exists来代替,但是后面的数据则需要使用array_flip进行倒转操作了。

  当一个字符串被当作数组来去取值时,又会发生什么呢?php是一门容错性很强的语言,它会尽量帮你改正错误,所以很聪明地将你的引用下标转化为整数,当然就得到0了,那么字符串下标为0取值则又会得到第一个字符串的值,是不是又超出了你的预期呢?解决方法是,在引用下标之前,还是确认一下这个变量是不是一个数组吧,is_array。

  虽然有许许多多的前辈遇到这样或那样的问题,也在不停地说,但是我们终究还是免不了,不停去犯错。这也许就是社会吧!大家都这么忙,哪有时间去破解你那烂代码! 哈哈

php中的一些不常见的问题foreach/in_array[开发篇]的更多相关文章

  1. Java 获取*.properties配置文件中的内容 ,常见的两种方法

    import java.io.InputStream; import java.util.Enumeration; import java.util.List; import java.util.Pr ...

  2. PHP编程中10个最常见的错误

    PHP是一种非常流行的开源服务器端脚本语言,你在万维网看到的大多数网站都是使用php开发的.本篇经将为大家介绍PHP开发中10个最常见的问题,希望能够对朋友有所帮助. 错误1:foreach循环后留下 ...

  3. Java中字符串的一些常见方法

    1.Java中字符串的一些常见方法 /** * */ package com.you.model; /** * @author Administrator * @date 2014-02-24 */ ...

  4. 转载:SQL中Group By 的常见使用方法

    SQL中Group By 的常见使用方法  转载源:http://www.cnblogs.com/wang-meng/p/5373057.html 前言今天逛java吧看到了一个面试题, 于是有了今天 ...

  5. Python 中的 10 个常见安全漏洞,以及如何避免(下)

    简评:编写安全代码很困难,当你学习一个编程语言.模块或框架时,你会学习其使用方法. 在考虑安全性时,你需要考虑如何避免被滥用,Python 也不例外,即使在标准库中,也存在用于编写应用的不良实践.然而 ...

  6. VC中引用第三方库,常见的库冲突问题

    Q:VC中引用第三方库,常见的库冲突问题 环境:[1]VS2008 [2]WinXP SP3 A1(方法一): [S1]第三方库(Binary形式的)如果同主程序冲突,则下载第三方库的源码[S2]保持 ...

  7. .NET中的异步编程——常见的错误和最佳实践

    在这篇文章中,我们将通过使用异步编程的一些最常见的错误来给你们一些参考. 背景 在之前的文章<.NET中的异步编程——动机和单元测试>中,我们开始分析.NET世界中的异步编程.在那篇文章中 ...

  8. html中a标签的常见用法

    html中a标签的常见用法 一.总结 一句话总结: a.页面跳转 b.使用锚点定位 c.下载文件 二.html中<a>标签的用法 转自或参考:html中<a>标签的用法http ...

  9. MySQL中的SQL的常见优化策略

    MySQL中的SQL的常见优化策略 MySQL中的索引优化 MySQL中的索引简介 1 避免全表扫描对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索 ...

随机推荐

  1. 使用串口安装centos操作系统

    https://linuxconfig.org/how-to-force-text-mode-installation-of-redhat-linux https://www.centos.org/f ...

  2. 3,postman的变量写法和collection

    1,环境变量和全局变量的添加和引用 pm.globals.get("variable_key");可以引用环境变量 2,collection的使用 当在tests中使用文件变量的时 ...

  3. mysql_事物

    1) set autocommit=0  关闭自动提交   插入修改,只有commit 才最终存入 2) start transaction   commit/rollback 3) show var ...

  4. oracle 查询clob 列时 很慢 , 未解决

    今天查询一张表 ,这张表有一个clob 列 select *  from  tableName :  很卡.. 难道是查询的太多? select * from tableName where rowN ...

  5. java多线程系列 目录

    Java多线程系列1 线程创建以及状态切换    Java多线程系列2 线程常见方法介绍    Java多线程系列3 synchronized 关键词    Java多线程系列4 线程交互(wait和 ...

  6. flag:用心学习的第一天

    目标是:加油学习,尽早改变世界

  7. gitlab的安装和基本使用

    一.gitlab的安装 1)安装依赖包 sudo yum install git vim gcc glibc-statc telnet -y sudo yum install -y curl poli ...

  8. 20175316 盛茂淞 MyCP(课下作业,必做)

    题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...

  9. Python_day8

    多态 class Animal(object): def run(self): print('animal is running') class Dog(Animal): def run(self): ...

  10. 数据结构C语言版-栈

    #include <stdio.h> #include <stdlib.h> #include <math.h> #include <iostream> ...