To find the maximum value from a set of 1-dimensional arrays, do this:
$d1 = array(450,420,440,430,421);
$d2 = array(460,410,410,430,413,375,256,411,656);
$d3 = array(430,440,470,435,434,255,198);
$t = max(max($d1),max($d2),max($d3));
// $t is 656
The inner max() functions operate on the arrays, the outer max compares the numeric results of the inner ones.
max
(PHP 4, PHP 5)
max — 最大値を返す
説明
mixed max ( number $arg1, number $arg2 [, number $...] )mixed max ( array $numbers )
max() は、パラメータの中で 数値として最も大きいものを返します。
パラメータとして配列をひとつだけ渡した場合は、 max() は 配列の中で最も大きい数値を返します。 最初のパラメータが整数・文字列・倍精度実数の場合は少なくとも 2 つのパラメータが必要であり、 max() はそれらの数値の最も大きいものを返します。 比較する数値の数に制限はありません。
注意: PHP は、数値として解釈できない string を 0 と評価します。しかし、もしそれが最大値であった 場合、返り値はもとの文字列となります。0 と評価される 引数が複数存在した場合、max() はもしその中に 数値の 0 があればそれを返し、そうでなければ アルファベット順で一番大きな文字列の値が返されます。
例 1093. max() の例
<?php
echo max(1, 3, 5, 6, 7); // 7
echo max(array(2, 4, 5)); // 5
echo max(0, 'hello'); // 0
echo max('hello', 0); // hello
echo max(-1, 'hello'); // hello
// 複数の配列を渡すと、max はその要素を左から順に比較します。
// この例では 2 == 2 ですが 4 < 5 となります。
$val = max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)
// 配列と配列でない値が渡された場合、常に
// 配列が最大と判定されます。
$val = max('string', array(2, 5, 7), 42); // array(2, 5, 7)
?>
パラメータ
返り値
例
参考
| () |
max
johnmott59 at hotmail dot com
18-May-2007 04:35
18-May-2007 04:35
johnphayes at gmail dot com
03-May-2006 01:27
03-May-2006 01:27
Regarding boolean parameters in min() and max():
(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).
Here's some test cases to illustrate:
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
tim at (NOSPAM) dot crazynot2 dot com
08-Nov-2005 06:56
08-Nov-2005 06:56
In response to the previous two posters (zher0 at netcarrier dot com & walkingmantis):
I was trying to do exactly what zher0 suggested; calculate the max value of a multi-dimensional array with variably sized 'sub-arrays'. Here is a simple little function I came up with to do just that:
<?php
function multimax( $array ) {
// use foreach to iterate over our input array.
foreach( $array as $value ) {
// check if $value is an array...
if( is_array($value) ) {
// ... $value is an array so recursively pass it into multimax() to
// determine it's highest value.
$subvalue = multimax($value);
// if the returned $subvalue is greater than our current highest value,
// set it as our $return value.
if( $subvalue > $return ) {
$return = $subvalue;
}
} elseif($value > $return) {
// ... $value is not an array so set the return variable if it's greater
// than our highest value so far.
$return = $value;
}
}
// return (what should be) the highest value from any dimension.
return $return;
}
?>
Please note that I have only performed very limited testing on this code -- be sure to check it thoroughly if you implement it somewhere!
nonick AT 8027 DOT org
18-Dec-2003 12:50
18-Dec-2003 12:50
If you are working with numbers, then you can use:
$a = ($b > $c) ? $b : $c;
which is somewhat faster (roughly 16%) than
$a = max($b, $c);
I tested this on several loops using integers and floats, over 1 million iterations.
I'm running PHP 4.3.1 as a module for Apache 1.3.27.
mikhail_kovalev at mail dot ru
14-May-2003 08:32
14-May-2003 08:32
Note that in version 4.0.3 (the only version I tested):
max (0, 0); // returns 0.
max (0, false); // returns 0.
max (false, 0); // returns false.
max (false, false); // returns false.
As a solution use this:
(int) max (false, 0); // returns 0.
(int) max (false, false); // returns 0.