您可以使用语言构造

isset或函数

array_key_exists。

isset应该有点快(因为它不是一个函数),但如果元素存在并且值为NULL,则返回false。

例如,考虑这个数组:

$a = array(

123 => 'glop',

456 => null,

);

而这三个测试,依靠isset:

var_dump(isset($a[123]));

var_dump(isset($a[456]));

var_dump(isset($a[789]));

第一个会得到你(元素存在,并且不为null):

boolean true

而第二个会得到你(元素存在,但是null):

boolean false

最后一个会得到你(元素不存在):

boolean false

另一方面,使用array_key_exists这样:

var_dump(array_key_exists(123, $a));

var_dump(array_key_exists(456, $a));

var_dump(array_key_exists(789, $a));

你会得到这些输出:

boolean true

boolean true

boolean false

因为,在两种第一种情况下,元素存在 – 即使它在第二种情况下为null。当然,在第三种情况下,它不存在。

对于像你的情况,我一般使用isset,考虑到我从来没有在第二种情况…但选择使用哪一个现在取决于你;-)

例如,你的代码可能变成这样:

if (!isset(self::$instances[$instanceKey])) {

$instances[$instanceKey] = $theInstance;

}

php如何检测数组是否存在,php – 如何检查数组元素是否存在?相关推荐

  1. php 数组是否存在,php in_array() 检查数组中是否存在某个值详解

    php有时候需要判断某一个值是否存在于数组中,我们可以直接使用php内置函数in_array()来实现判断.php in_array 函数用于检查数组中是否存在某个值,如果存在,则返回true,否则返 ...

  2. php模板数组长度判断,php数组是否存在指定字符与数组长度检测实例_PHP教程

    本教程只讲了二个地方一个是利用数组函数in_array 检查数组中是否存在指定字符串,与利用count函数来判断数组长度.定义和用法 本教程只讲了二个地方一个是利用数组函数in_array 检查数组中 ...

  3. [JavaScript] JavaScript数组挖掘,不只是讲数组哟(2)

    课程来源:后盾人 上一篇的内容:[JavaScript] JavaScript数组挖掘,不只是讲数组哟 数组引用类型分析,多维数组,用Array.of为数组创建细节,类型检测与转换,在一个数组后面加一 ...

  4. [JavaScript] JavaScript 数组挖掘,不只是讲数组哟

    课程来源:后盾人 数组引用类型分析 数组的定义 const array = new Array('hello', 'dust', 1, 2, 3, 4, 5) console.log(array) l ...

  5. 为什么处理排序数组要比处理未排序数组快?

    这是一段C ++代码,显示了一些非常特殊的行为. 出于某些奇怪的原因,奇迹般地对数据进行排序使代码快了将近六倍: #include <algorithm> #include <cti ...

  6. java数组求和递归,js数组去重 数组拼接 替换数组中的指定值 递归数组 判断数组中是否存在指定值 数组求和 根据条件判数组值...

    // 数组去重 var arr1 = [1,1,2,3,4,5,6,3,2,4,5,'a','b','c','a',6,7,8,3,5,7,8,34] // console.log(Array.fro ...

  7. matlab单元数组和结构,Matlab使用单元数组和结构数组

    Matlab使用字符串数组.单元数组(cell array)和结构数组 (struct array) 要在MALTAB中实现比较复杂的编程,就不能不用单元数组(cell array)和结构数组(str ...

  8. 原生JS去除二维数组中重复了的一维数组

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

  9. 数组方法中会更改原数组,不会更改原数组(详细)

    1.不会改变原来数组的有: concat() 连接两个或更多的数组,并返回结果.  如果arr.concat()里面不放数组参数,则会浅拷贝arr 如果参数不是数组,它不会递归到嵌套数组参数中 数据类 ...

最新文章

  1. 鸿蒙系统方舟运行时,方舟编译器立功!第三方App已经落地,距离鸿蒙系统还会远吗?...
  2. 计算机函数match,秒杀vlookup函数,Index+Match函数组合
  3. position的四种属性
  4. python pipenv_为什么Python开发人员应该使用Pipenv
  5. java学习日记(1-7)
  6. jquery 设置 select 默认值方法
  7. php自动关机代码,vb下的恶搞关机程序
  8. Windows10 添加开始菜单未显示应用到磁贴的方法
  9. 贴心的特效制作软件,抖音特效开放平台就能找到
  10. centos 虚拟机输入大小写混乱问题
  11. “贵州与您相约”英文网站8月18日正式上线;大华股份助力长兴打造景区数字化管理样板 | 全球旅报...
  12. Redis(1)入门指令
  13. ff新推荐的关闭办法
  14. 排名第一的亚马逊关键词工具
  15. 运行fis3 server start --type smarty启动时,报错The “data“ argument must be of type string or an instance of
  16. 虚幻4快速上手实战系列 之 三维弹球
  17. findstr 用法
  18. 一键ghost(1key ghost)更改备份路径的方法
  19. 对semantic的部分总结
  20. 阿里云产品推荐——网关

热门文章

  1. node debug包
  2. 减少科研文章写作错误的一点小技巧
  3. Eclipse的SVN插件移动中文名称文件提示org.tigris.subversion.javahl.ClientException: Bogus URL...
  4. linux 安全 ***检测 杀毒 rootkit
  5. 八天学会MongoDB:第三天 细说高级操作
  6. WPF下可编辑Header的Tab控件实现
  7. Para list设置
  8. clion 工程打开选项 安全模式预览 Preview in Safe Mode 信任工程 Trust Project 简介
  9. linux c getrlimit sysconf 系统限定 实例
  10. easyui 添加 自定义图标