php - 按条件排列的第一个元素
问题描述
我正在寻找一种优雅的方式来获取满足给定条件的数组的第一个(也是唯一一个)元素。
简单的例子:
输入:
[
['value' => 100, 'tag' => 'a'],
['value' => 200, 'tag' => 'b'],
['value' => 300, 'tag' => 'a'],
]
健康)状况:$element['value'] > 199
预期输出:
['value' => 200, 'tag' => 'b']
我自己想出了几个解决方案:
遍历数组,检查条件并在找到时中断
使用 array_filter 应用条件并获取过滤后的第一个值:
array_values( array_filter( $input, function($e){ return $e['value'] >= 200; } ) )[0];
两者似乎都有些麻烦。有没有人有更清洁的解决方案?我是否缺少内置的 php 函数?
解决方案
我能找到的最短的是使用current
:
current(array_filter($input, function($e) {...}));
current
本质上获取第一个元素,或者false
如果它为空则返回。
如果代码经常重复,最好将其提取到自己的函数中。
推荐阅读
- python - 如何组合两个 YOLOv5 模型?
- spring - Spring Boot MongoDB 云集群
- django - Nginx 在用于容器的 Azure Web App 的 Dockered Django 应用中找不到静态文件
- python - Python - 读取文本并写入 csv。将空列替换为默认的“N/A”值
- java - 等价于 java 中的 std::iota
- json - Flutter/Dart setState 不刷新文本小部件中的文本
- react-hooks - 如何在 apollo 客户端中获取值
- node.js - Node js Mysql Ininter加入多个数据库表
- javascript - 将等待值导出为 ESM 模块
- javascript - 持续监听智能合约事件