[英]How can I get the min value in an array above a certain number?
我有一個像這樣的數組:
[5229561]=> 8
[5229582]=> 9
[5229583]=> 10
[5229584]=> 11
等等
如何使最小值大於/等於10?
因此,在這個示例中,它將給我5229583。我知道min()函數,但是我不確定如何獲取大於10的值。
如果數組已排序並且鍵是連續的(例如100,101,102否78,5,13),則可以使用二進制搜索。
總的來說,您不能比線性搜索快得多。
帶O(1)額外內存使用量的代碼:
$curbest=null;
foreach($data as $k => $v){
if($v>=10 && (is_null($curbest) || $v<$data[$curbest]))
$curbest=$k;
}
您需要為此評估數組,可以使用多種方法:
為了簡單起見(而不是幻想),我將向您展示學習PHP的最簡單方法。
$input_array = array('5229561' => 8,
'5229582' => 9,
'5229583' => 10,
'5229584' => 11);
foreach ($input_array as $key => $value) {
if($value >= 10) {
$output[$key] = $value;
}
}
$輸出將是:
array (
'5229583' => 10,
'5229584' => 11
)
希望能有所幫助
編輯補充:(由於下面的RiaD帖子)另一種簡單的方法可以做到這一點。
function greaterTen($var) {
return ($var >= 10);
}
$output = array_filter($input_array,"greaterTen");
甚至(從php5.3開始):
$output = array_filter($input_array,function ($var) {
return ($var >= 10);
});
您可能只想對數組排序(如果需要鍵保持不變,請使用ksort
),然后進行迭代直到找到> =最小值。
像這樣:
function findMinValueAbove($array, $min)
{
sort($array); # Thanks!
foreach ($array as $v) if ($v >= $min) return $v;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.