在写 PHP 的数组遍历的时候,我们通常会这样写:

foreach ($definition['keys'] as $id => $val) {// ...
}

但是其实这样会引起一个重要的问题:如果 $definition['keys'] 没有定义的话,这个时候的数组变量(也就是 foreach)就会出现错误。

所以,我们进阶成这个样子:

if (!empty($definition['keys']) {foreach ($definition['keys'] as $id => $val) { // ... } }

是不是很常见?我们只要在外边再包含一层 if 判断就好了。这样能够保证数组的安全遍历。

不过这样还没有达到简短的需求,所以借助 PHP7 的 ?? 便利,我们可以写成这个样子:

foreach ($definition['keys'] ?? [] as $id => $val) {// ...
}

是不是很 neat ! 哈哈哈,那么在这里理解 ?? 可以这样理解:

$a = is_null($b) ? $default : $b; $a = $b ?? $default;

相当于做了一个 is_null($b) 的操作。

来源:php简短而安全的数组遍历

转载于:https://www.cnblogs.com/lamp01/p/8443114.html

php7简短而安全的数组遍历方法相关推荐

  1. php的遍历方法,PHP数组遍历方法总结

    在PHP中数组分为两类: 数字索引数组和关联数组. 其中数字索引数组和C语言中的数组一样,下标是为0,1,2- 而关联数组下标可能是任意类型,与其它语言中的hash,map等结构相似. 下面介绍PHP ...

  2. ES5和ES6数组遍历方法详解

    ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...

  3. js 数组遍历方法详解(map、filter、find、findIndex、reduce)

    目录 前言 map map是什么 map方法的结构及入参 语法糖 map一般不改变原数组 filter 说明 例子 find 和 findIndex 说明 例子 reduce 说明 例子 尾言 前言 ...

  4. 浅谈JS的数组遍历方法

    用过Underscore的朋友都知道,它对数组(集合)的遍历有着非常完善的API可以调用的,_.each()就是其中一个.下面就是一个简单的例子: var arr = [1, 2, 3, 4, 5]; ...

  5. ES6中新增数组遍历方法

    ES6中新增的方法 遍历方法: forEach(),fifter(),some(): array.forEach(function(currentValue,index,arr)) // curren ...

  6. js 数组遍历符合条件跳出循环体_Js数组遍历方法对比总结

    引言: ES6为javascript为数组遍历提供了新的一种方式: for....of.....那之前的遍历方法各存在哪些缺点?for...of...有什么好处?接下来,我们先回顾一下有多少种方式. ...

  7. JavaScript 数组遍历方法的对比

    前言 JavaScript 发展至今已经发展出多种数组的循环遍历的方法,不同的遍历方法运行起来那个比较快,不同循环方法使用在那些场景,下面将进行比较: 各种数组遍历的方法 for 语句 代码: var ...

  8. js数组遍历方法总结与对比

    目录 总结 一.常规方法 for的4种写法 while 二.ES6方法 for...of,得到每项元素 for...in,得到的是数组索引 三.数组实例上的遍历方法 forEach(),得到每一项元素 ...

  9. 数据类型_array_es6新增的数组遍历方法

    数组遍历 [1]map方法 [2]filter方法 [3]forEach方法 [4]some方法 [5]every方法 [6]findIndex方法 [7]includes方法 [8]reduce方法 ...

最新文章

  1. Hello World of OpenCascade
  2. python运势预测程序_Python 爬虫系列之一——每日星座运势
  3. QML笔记-JavaScript在QML中的使用(直接调用和间接调用)
  4. 基础知识 + 面试题目 总结 索引页
  5. 程序员的进阶课-架构师之路(5)-队列
  6. java日期减去天数得日期_Java日期添加天数,减去天数,日历
  7. Remove_if 删除vector数据
  8. 客户端可以查询到数据,程序却查询不到数据
  9. NH7020固件网口分析与platoSDR固件对比
  10. PDF文件怎么解密?教你三种解密的方法
  11. QCC3040---DFU(OTA)固件生成方法OTA方法
  12. clac计算样式不生效?
  13. sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证
  14. 现阶段中国人工智能生态的优缺点分析
  15. HTML学生个人网站作业设计:个人主页博客web网页设计制作 (HTML+CSS)
  16. linux系统部署web项目
  17. 张凯复旦大学计算机学院,徐丰 - 师资队伍 - 复旦大学信息科学与工程学院
  18. 全球及中国白蚁诱饵产品行业发展价值与需求潜力分析报告2022版
  19. IDC FutureScape:全球智慧城市2019年预测 - 中国启示
  20. 模拟QQ音乐微信登录界面

热门文章

  1. IOS7笔记-6、控制器多态性、导航控制器、选项卡栏控制器
  2. java web 的标准目录结构(zz)
  3. php对提交数据的验证
  4. 如何修改IE的默认标题
  5. [JavaScript]关于div的隐藏
  6. 应力循环次数60ant_恒温恒湿箱循环试验失效分析
  7. python 日志不会按照日期分割_python实现日志按天分割
  8. 7.破解的最简单例子
  9. poj2418map或者字典树
  10. C语言经典例85-判断一个素数能被几个9整除