我有一个包含这些值的数组:
Array
(
[0] => Array
(
[0] => John
[1] => 2012-03-29
[2] => 1
)
[1] => Array
(
[0] => Doe
[1] => 2012-03-30
[2] => 1
)
[2] => Array
(
[0] => John
[1] => 2012-03-31
[2] => 2
)
[3] => Array
(
[0] => Doe
[1] => 2012-03-31
[2] => 5
)
[4] => Array
(
[0] => John
[1] => 2012-04-02
[2] => 5
)
[5] => Array
(
[0] => John
[1] => 2012-04-02
[2] => 21
)
)
我正在尝试为array[][2]
中的每个日期获取array[][1]
的最大值。
例如,在数组中
Array[2][1] = 2012-03-31 | Array[2][2] = 2
Array[3][1] = 2012-03-31 | Array[3][2] = 5
在同一天中,我想保留Array[3]
并弃掉Array[2]
。
我尝试了一个foreach函数:
foreach ($days as $k) {
$max_vals[] = array($k[0], $k[1], max($k[2]));
}
但发现这与日子无关。如何对这个数组进行排序,保持每天的最高值,并丢弃其余的数据?
答案 0 :(得分:1)
以下是解决此问题的一种方法:
使用foreach循环遍历数组
在foreach循环组中按名称,日期,数字
与先前的值(如果存在)进行比较,如果数字更高则覆盖
希望这有帮助。
答案 1 :(得分:1)
试试这个:
$bigArray=array(
array('John','2012-03-29',1),
array('Doe','2012-03-30',1),
array('John','2012-03-31',2),
array('Doe','2012-03-31',5),
array('John','2012-04-02',5),
array('John','2012-04-02',21),
array('John','2012-03-07',21)
);
$output=array();
foreach($bigArray as $element){
if($element[1]>$output[$element[2]]){
$output[$element[2]]=$element[1];
}}
echo '<pre>';
print_r($output);
输出:
Array
(
[1] => 2012-03-30
[2] => 2012-03-31
[5] => 2012-04-02
[21] => 2012-04-02
)
或者相反:
$bigArray=array(
array('John','2012-03-29',1),
array('Doe','2012-03-30',1),
array('John','2012-03-31',2),
array('Doe','2012-03-31',5),
array('John','2012-04-02',5),
array('John','2012-04-02',21),
array('John','2012-03-07',20)
);
$output=array();
foreach($bigArray as $element){
if($element[2]>$output[$element[1]]){
$output[$element[1]]=$element[2];
}}
echo '<pre>';
print_r($output);
打印:
Array
(
[2012-03-29] => 1
[2012-03-30] => 1
[2012-03-31] => 5
[2012-04-02] => 21
[2012-03-07] => 20
)
答案 2 :(得分:1)
以下代码将迭代$ data中的每个值,或者将新遇到的日期添加到$cache
或检查它是否更大。
$cache = array();
// Note: $data is the array you provided above, replace with your variable name.
foreach ($data as $k => $v) {
if (isset($cache[$v[1]])) {
if ($cache[$v[1]] < $v[2]) {
$cache[$v[1]] = $v[2];
}
} else {
$cache[$v[1]] = $v[2];
}
}
完成后,$cache
将是一个数组,其值为日期,键为array[][2]
的最大值。