首页 > 解决方案 > 按条件排列的第一个元素

问题描述

我正在寻找一种优雅的方式来获取满足给定条件的数组的第一个(也是唯一一个)元素。

简单的例子:

输入:

[
    ['value' => 100, 'tag' => 'a'],
    ['value' => 200, 'tag' => 'b'],
    ['value' => 300, 'tag' => 'a'], 
 ]

健康)状况:$element['value'] > 199

预期输出:

['value' => 200, 'tag' => 'b']

我自己想出了几个解决方案:

  1. 遍历数组,检查条件并在找到时中断

  2. 使用 array_filter 应用条件并获取过滤后的第一个值:

    array_values(
        array_filter(
            $input, 
            function($e){
                return $e['value'] >= 200;
            }
        )
    )[0];
    

两者似乎都有些麻烦。有没有人有更清洁的解决方案?我是否缺少内置的 php 函数?

标签: phparray-filter

解决方案


我能找到的最短的是使用current

current(array_filter($input, function($e) {...}));

current本质上获取第一个元素,或者false如果它为空则返回。

如果代码经常重复,最好将其提取到自己的函数中。


推荐阅读