PHP - 如果一行包含字符串,则过滤数组

PHP - Filter an array if a row contains string

我有以下 API 输出,我基本上想在相关字段包含 'minutes' 时获取成员 ID 'minutes' 我如何使用数组过滤器做到这一点?

members: 
    239: 
        relative: "21 minutes ago"
    941591: 
        relative: "5 hours ago"     
    4178: 
        relative: "59 minutes ago"      
    78: 
        relative: "2 hours ago"     

(不确定正确的术语)但“relative”是成员 ID 下方的 header/field 名称,并且字段 relative 包含如下值:“59 分钟前”

我知道我可以通过遍历所有成员并检查字段来得到我的答案,但我不想这样做

有效答案:

$new = array_filter($idcall_array['members'], function ($var) {
    return strpos($var['relative'], 'minutes') !== false;
});

提取 relative 列并 grep 查找包含 minutes:

的列
$result = preg_grep('/minutes/', array_column($array['members'], 'relative'));

或过滤器:

$result = array_filter($array['members'],
                       function($v) {
                           return strpos($v['relative'], 'minutes') !== false;
                       });

然后拿到钥匙:

$ids = array_keys($result);