以下数组:
$arr = array(
0 => array(u_id => 1, time => 1),
1 => array(u_id => 1, time => 2),
2 => array(u_id => 2, time => 4),
3 => array(u_id => 2, time => 3)
)
以上数组是不规律的,我想找出数组中u_id相同,但是time最大的值,请问应该怎么找?多谢啦。
以下数组:
$arr = array(
0 => array(u_id => 1, time => 1),
1 => array(u_id => 1, time => 2),
2 => array(u_id => 2, time => 4),
3 => array(u_id => 2, time => 3)
)
以上数组是不规律的,我想找出数组中u_id相同,但是time最大的值,请问应该怎么找?多谢啦。
// 循环比较,你试试
$result = [];
function test($arr, $opt)
{
global $result;
static $opts= [];
if(in_array($opt, $opts)) return;
$opts[] = $opt;
$max = 0;
foreach ($arr as $key => $value)
{
if(reset($value) == $opt ) if($max < $next = next($value)) $max = $next;
}
$result[$opt] = $max;
}
for($i = 0;$i<count($arr);$i++)
{
test($arr, $arr[$i]['u_id']);
}
print_r($result);
$res=[];
$arr = array(
0 => array('u_id' => 1, 'time' => 1),
1 => array('u_id' => 1, 'time' => 2),
2 => array('u_id' => 2, 'time' => 4),
3 => array('u_id' => 2, 'time' => 3)
);
foreach($arr as $k=>$v){
if(!isset($res[$v['u_id']])) {
$res[$v['u_id']] = $v;
}else {
if($v['time'] > $res[$v['u_id']]['time']){
$res[$v['u_id']]['time'] = $v['time'];
}
}
}
print_r(array_values($res));
Array
(
[0] => Array
(
[u_id] => 1
[time] => 2
)
[1] => Array
(
[u_id] => 2
[time] => 4
)
)
foreach ($arr as $k => $v) {
if ($k === 0) {
continue;
}
if ($arr[$k-1]['u_id'] === $v['u_id']) {
if ($arr[$k-1]['time'] < $v['time']) {
unset($arr[$k-1]);
continue;
}
$arr[$k]['time'] = $arr[$k-1]['time'];
unset($arr[$k-1]);
}
}
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答569 阅读✓ 已解决
785 阅读
以上。