最大和最小日期我有一個數組如何找到關鍵
$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
最大和最小日期我有一個數組如何找到關鍵
$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
我會懶惰,只是讓PHP看看數組兩次。一旦找到最低,第二次發現該值的第一個匹配項:
$min_key = array_search(min($a), $a);
或爲最大:
$max_key = array_search(max($a), $a);
$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];
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);
一種方法是通過array_keys從陣列中提取密鑰,然後通過對自己的密鑰進行排序。
因此,你最終用:
<?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 />';
?>
(不知道是否要用於最大值和最小值鍵或爲最大值和最小值的值的鍵)
這將返回最大值/最小值的值:
$keys = array_keys($a);
$min = $a[min($keys));
$max = $a[max($keys));
二讀時,這可能是OP實際要求的。 (查找最短/最長日期。) – mario 2011-05-04 19:53:27
'max()'和'min()'返回數組的最高/最低值,而不是最高/最低的鍵。 – 2011-05-04 19:45:40
是的,這就是他們所做的。因此,第二步。 – mario 2011-05-04 19:46:10
Arg,愚蠢的我認爲'array_search()'返回一個值,而不是一個鍵......但這沒有任何意義。抱歉! :-) – 2011-05-04 19:49:07