php - 仅在 PHP 中显示大于 x 秒的唯一 ID
问题描述
我试图弄清楚如何在这个数组中只输出 30 秒以上的唯一 ID。为了简单起见,它只需要在 30 秒内获取第一个值以获得唯一 ID。
$array = array(
0 => array(
'id' => '1',
'seconds' => '36'
),
1 => array(
'id' => '1',
'seconds' => '60'
),
2 => array(
'id' => '1',
'seconds' => '36'
),
3 => array(
'id' => '2',
'seconds' => '22'
),
4 => array(
'id' => '1',
'seconds' => '36'
),
5 => array(
'id' => '2',
'seconds' => '36'
),
6 => array(
'id' => '3',
'seconds' => '44'
),
7 => array(
'id' => '3',
'seconds' => '2'
),
8 => array(
'id' => '4',
'seconds' => '58'
),
9 => array(
'id' => '6',
'seconds' => '9'
),
10 => array(
'id' => '6',
'seconds' => '8'
));
理想的结果是这样的
$arrayResult = array(
0 => array(
'id' => '1',
'seconds' => '36'
),
1 => array(
'id' => '2',
'seconds' => '36'
),
2 => array(
'id' => '3',
'seconds' => '44'
),
3 => array(
'id' => '4',
'seconds' => '58'
));
目前,我只能获得 ID 的唯一值,而没有与“id”字段相关的秒数。
解决方案
您可以使用它array_reduce
来迭代$array
并仅提取您想要的值。
$array = array_reduce($array, function ($unique, $entry) {
extract($entry);
if (! isset($unique[$id]) && $seconds > 30) {
$unique[$id] = $entry;
}
return $unique;
}, []);
$array = array_values($array);
推荐阅读
- python - 在一组覆盆子 Pis 中广播消息
- python - 使用变量处理 Django 翻译消息
- r - 当我的整个数据框由数字组成时,为什么会出现此错误?
- ios - 无法从 JSON 中获取值(无法将类型“__NSCFNumber”(0x7fff87b9c520)的值转换为“NSDictionary”(0x7fff87b9d5b0))
- javascript - 渲染动态渲染列表 React/Redux 时使用的旧道具
- amazon-web-services - 如何在 F# 中访问部分 AWS Lambda 事件?
- sql - 插入表需要来自另一个表的特定条件
- ruby-on-rails - 在 Ruby on Rails 项目中将“关注点”存储在哪里?(轨道 5.2+)
- mitmproxy - 如何用 mitmproxy/mitmdump 替换 JS 文件
- android-studio - 在 AndroidManifest.xml 中使用字符串资源时出现问题