min
(PHP 4, PHP 5)
Report a bug
Descripción
Si el primer y único parámetro es una matriz, min() devuelve el valor más bajo en esa
matriz. Si al menos dos parámetros son entregados, min() devuelve el menor de estos
valores.
Note:
Report a bug
Parámetros
valores
Report a bug
Valores devueltos
Report a bug
Ejemplos
<?php
echo min(2, 3, 1, 6, 7); // 1
Report a bug
Ver también
If NAN is the first argument to min(), the second argument will always be returned.
<?php
// \n's skipped for brevity
print max(0,NAN);
print max(NAN,0);
print min(0,NAN);
print min(NAN,0);
?>
Returns:
0
NAN
NAN
0
<?php
// data
$min_keys = array();
$player_score_totals = array(
'player1' => 300,
'player2' => 301,
'player3' => 302,
'player4' => 301,
...
);
print_r($min_keys);
?>
When using a variable with an array that has a list of numbers, put just the variable
in min(). Don't use integer index's. Seems pretty straight forward now, but I wasn't
used to just putting down the variable for an array in functions.
<?php
$list = array(9,5,4,6,2,7);
echo min($list); // display 2
?>
<?php
?>
<?php
print (int)"2008-01-12"; // 2008
?>
I have found a very useful trick to help get round the problem of setting a variable
to max int when finding a min i.e.
<?php
$val = 10;
$min = 100000; // This is unpleasant and I couldn't find a equivalent to the C++
MAXINT
if ($val < $min)
{
$min = $val;
}
?>
<?php
$dataSet = Array(7, 8, 9, -1, -100, 0, 1, 2, 3, 5, 6);
$min = true;
$max = true;
echo("min = $min");
echo("max = $max");
?>
$max can be set to anything e.g. "infinity", but the same trick doesn't work with min,
however true does work (false doesn't). Not sure why though.
The above code even works with a data set like this...
<?php $dataSet = Array("0.5", 1, 2, "3", "-1", "5"); ?>
but min doesn't like null or negative float e.g. "-1.2" and "" can give some odd
results too.
DO 03-Jul-2008 10:23
I've modified the bugfree min-version to ignore NULL values (else it returns 0).
<?php
function min_mod () {
$args = func_get_args();
return $min;
}
?>
$tmp = $x;
if($tmp < $min)
{
$tmp = $min;
}
if($tmp > $max)
{
$tmp = $max;
}
$y = $tmp;
Input:
$x = 0;
echo bound(0, 1, 12).'<br />';
$x = 1;
echo bound($x, 1, 12).'<br />';
$x = 6;
echo bound($x, 1, 12).'<br />';
$x = 12;
echo bound($x, 1, 12).'<br />';
$x = 13;
echo bound($x, 1, 12).'<br />';
Output:
1
1
6
12
12
You will get an "Wrong parameter count" error (PHP 4 and possibly 5) if your array
looks like the following:
min(115.23,432.11,0.00,45.76)
The 0.00 creates the error. Convert the 0.00 to a high number such as 10000000000.00
or remove it from the array before running the min() function.
Be very careful when your array contains both strings and numbers. This code works
strange (even though explainable) way:
var_dump(max('25.1.1', '222', '99'));
var_dump(max('2.1.1', '222', '99'));
empty strings '' will also return false or 0, so if you have something like
if you only want to get the lowest number, you'll have to resort to the old fashioned
loop
$minVal = 100;
foreach ($test as $value) {
if (is_numeric($value) && $value < $minVal) {
$minVal = $value;
}
(a) If any of your parameters is boolean, max and min will cast the rest of them to
boolean to do the comparison.
(b) true > false
(c) However, max and min will return the actual parameter value that wins the
comparison (not the cast).
1. max(true,100)=true
2. max(true,0)=true
3. max(100,true)=100
4. max(false,100)=100
5. max(100,false)=100
6. min(true,100)=true
7. min(true,0)=0
8. min(100,true)=100
9. min(false,100)=false
10. min(100,false)=false
11. min(true,false)=false
12. max(true,false)=true
> NEVER EVER use this function with boolean variables !!!
> Or you'll get something like this: min(true, 1, -2) == true;
It is possible to use it with booleans, there is is just one thing, which you need to
keep in mind, when evaluating using the non strict comparison (==) anyting that is not
bool false, 0 or NULL is consideret true eg.:
(5 == true) = true;
(0 == true) = false;
true is also actually anything else then 0, false and null. However when true is
converted to a string or interger true == 1, therefore when sorting true = 1. But if
true is the maximum number bool true is returned. so to be sure, if you only want to
match if true is the max number remember to use the strict comparison operater ===
31-Jan-2006 05:37
Here is my slightly modified version of the bugfree min-version. Now the max()
function is no longer used in the modification and overall it's fasten up. Would be
<?php
function min_mod () {
$args = func_get_args();
return $min;
}
?>
If you want min to return zero (0) when comparing to a string, try this:
<?php
min(3,4,";"); // ";"
min(0,min(3,4,";")) // 0
?>
I tested this with max(), but I suppose it applies to min() too: If you are working
with numbers, then you can use:
$a = min($b, $c);
I tested this on several loops using integers and floats, over 1 million iterations.
min() can be used to cap values at a specific value. For instance, if you're grading
papers and someone has some extra credit, but that shouldn't make it to the final
score:
$pts_possible = 50;
$score = 55;
Further modifications to the minnum function above.. This is for a project where I had
to grab an entire column out of a database consisting of values that might be string,
might be string representations of numbers (floating point or integer) or might be
NULL, and find the minimum NUMERIC value:
function minnum($numarray){
Gets the floating point value of each entry and uses this to check whether it's
actually a number before checking whether it's the minimum or not. Also contains
modifications noted above to use it as a drop in replacement for min - ie multiple
values passed.
$arSrc[0]=14;
$arSrc[1]=16;
$arSrc[2]=13;
$arSrc[3]=17;
then in order to get the min element and its position in the array you can do:
$iMinValue = min($arSrc);
$arFlip = array_flip($arSrc);
$iMinPosition = $arFlip[$iMinValue];
echo
'<br />min_value=',
$iMinValue,
'<br />min_position=',
$iMinPosition
;
this example works for also for an associative array; of course with numeric values
08-Jul-2002 09:36
Re: above example - for a proper drop in replacement for the above, insert
if ( ! is_array($numarray) )
$numarray = func_get_args();
after
$min=0;
$numarray = func_get_args();
)
The 'undefined' behaviour can bit you badly. I would expect min(undefined, -1000) to
return -1000. Not so.