如何按键查找最大和最小日期

时间:2011-05-04 19:38:02

标签: php arrays

我有一个数组

$a = array(
           "2010-05-03" =>100,
          "2010-05-04" =>400,   
           "2008-05-01" =>800,
          "2011-01-01" =>800
     ); 

如何找到key( date)的最大值和最小值?

例如:

max => 2011-01-01
min => 2008-05-01

5 个答案:

答案 0 :(得分:8)

我会很懒,让PHP在数组上看两次。找到最小值和第二次找到该值的第一个匹配键:

$min_key = array_search(min($a), $a);

或者最大值:

$max_key = array_search(max($a), $a);

答案 1 :(得分:4)

(不确定是否需要max和min键的值或者max和min值的键。)

这将返回最大/最小键的值:

$keys = array_keys($a);
$min = $a[min($keys));
$max = $a[max($keys));

答案 2 :(得分:2)

$maxK = $a[0];
$minK = $a[0];
foreach($a as $k => $v) {
    if($v > $a[$maxK]) $maxK = $v;
    if($v < $a[$minK]) $minK = $v;
}

可能是你想要的。然后你可以得到最小/最大键和值,如下所示:

$maxKey = $maxK;
$maxValue = $a[$maxK];
$minKey = $minK;
$minValue = $a[$minK];

答案 3 :(得分:2)

一种方法是通过array_keys从数组中提取密钥,然后自然地通过natcasesort对密钥进行排序。

因此,你最终得到:

<?php
    $testData = array(
        "2010-05-03" =>100,
        "2010-05-04" =>400,   
        "2008-05-01" =>800,
        "2011-01-01" =>800
    );

    natcasesort($testKeys = array_keys($testData));

    echo 'Min: ' . $testKeys[0] . ', max: ' . $testKeys[count($testKeys) - 1] . '<br />';
?>

答案 4 :(得分:1)

asort($a);
$keys = array_keys($a);
$min = $keys[0];
$max = $keys[count($keys) - 1];

或简单地

$min = array_search(min($a), $a);
$max = array_search(max($a), $a);