3

私は3つの番号を持っています:

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

最小値を見つけたいので、そのために PHPmin関数を使用しました。この場合、 が得られ1ます。

しかし、負の数がある場合、

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

と の正の値を比較したいだけなので、PHPはと ではなくmin()を与える必要があります。負の数は無視したい。$b$a$b$c

PHPに何か方法はありますか?値が負か正かを調べてから使おminうと思ったのですが、正の値だけを に渡す方法が思いつきませんでしたmin()

それとも、負かどうかを確認してから0にしてから、何か他のことをする必要がありますか?

4

3 に答える 3

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;'));

実際に見てください

于 2011-07-19T14:33:07.827 に答える
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;
}));
于 2011-07-19T14:34:24.093 に答える
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));
?>
于 2011-07-19T14:34:23.727 に答える