[英]Only show Unique ID greater than x seconds in PHP
我试图弄清楚如何仅在此数组中输出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);
$final_array = array();
foreach($array as $val)
{
if($val['seconds'] > 30 && (!array_key_exists($val['id'], $final_array))){
$final_array[$val['id']] = $val;
}
}
echo "<pre>";
print_r($final_array);
echo "</pre>";
如果您想重置阵列键,则可以使用
$final_array = array_values($final_array);
echo "<pre>";
print_r($final_array);
echo "</pre>";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.