2011-07-19 55 views
1

負值我有三個數字:分函數忽略PHP

$a = 1 
$b = 5 
$c = 8 

我想找到的最小和我使用的PHP min函數,該函數。在這種情況下,它會給1

但如果是負數,比如

$a = - 4 
$b = 3 
$c = 9 

現在PHP min()應該給$b,而不是$a,因爲我只是想比較正面的價值觀,這是$b$c。我想忽略負數。

在PHP中有什麼辦法嗎?我想我會檢查這個值是負值還是負值,然後使用min,但我想不出如何將正值傳遞給min()

或者我應該看看它是否爲負值,然後使其爲0,然後做其他的事情?

+1

創建一個數組,濾波器陣列中,如果值<0,刪除這個數組元素,則該陣列 –

+0

上使用min()*不寒而慄*字符串「-ve」和「+ ve」不是英語中的單詞。 – 2011-07-19 14:32:46

回答

8

您應該首先過濾我們的負值。

如果您將它們全部放入數組中,例如

$a = - 4; 
$b = 3; 
$c = 9; 

$values = array($a, $b, $c); 
$values = array_filter($values, function($v) { return $v >= 0; }); 
$min = min($values); 

print_r($min); 

上面的例子使用匿名功能,因此它僅在PHP> = 5.3的作品,但你可以用

$values = array_filter($values, create_function('$v', 'return $v >= 0;')); 

See it in action做同樣的早期版本。

+0

爆炸你......被毆打僅僅幾秒鐘。 – FinalForm

+0

@FinalForm:對不起! :) – Jon

+0

你救我一天:-) – vietnguyen09

0

http://codepad.org/DVgMs7JF

<? 
$test = array(-1, 2, 3); 

function removeNegative($var) 
{ 
    if ($var > 0) 
     return $var; 
} 

$test2 = array_filter($test, "removeNegative"); 

var_dump(min($test2)); 
?> 
3
$INF=0x7FFFFFFF; 

min($a>0?$a:$INF,$b>0?$b:$INF,$c>0?$c:$INF) 

min(array_filter(array($a,$b,$c),function($x){ 
    return $x>0; 
}));