在多维数组中保留包含特定子字符串的行[关闭]

问题描述 投票:0回答:1

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

[
    'members' => [ 
        239 => ['relative' => '21 minutes ago'],
        941591 => ['relative' => '5 hours ago'],        
        4178 => ['relative' => '59 minutes ago'],       
        78 => ['relative' => '2 hours ago']
    ]
]       

(不确定正确的术语)但“相对”是成员 ID 下方的标头/字段名称,并且相对字段包含以下值:“59 分钟前”

我知道我可以通过循环所有成员并检查字段来得到答案,但我不喜欢这样做

php arrays multidimensional-array filtering array-filter
1个回答
1
投票

提取

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);
© www.soinside.com 2019 - 2024. All rights reserved.