84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
以下数组:
$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最大的值,请问应该怎么找?多谢啦。
ringa_lee
// ###思路是如果id对应的time没有值,那么赋值;如果有,那么做比较,大则替换。 $ids_arr = []; foreach ($arr as $k => $v) { if (!isset($ids_arr[$v['u_id']])) { $ids_arr[$v['u_id']] = $v['time']; } else { $v['time'] > $ids_arr[$v['u_id']] && $ids_arr[$v['u_id']] = $v['time']; } } print_r($ids_arr);
以上。
// 循环比较,你试试
$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]); } }
以上。
// 循环比较,你试试