一、定义
(1)max() 返回最大值。
手册:http://www.w3school.com.cn/php/func_math_max.asp
max() 返回参数中数值最大的值。
如果仅有一个参数且为数组,max() 返回该数组中最大的值。如果第一个参数是整数、字符串或浮点数,则至少需要两个参数而 max() 会返回这些值中最大的一个。可以比较无限多个值。
(2)min() 返回最小值。
手册:http://www.w3school.com.cn/php/func_math_min.asp
min() 返回参数中数值最小的。
如果仅有一个参数且为数组,min() 返回该数组中最小的值。如果第一个参数是整数、字符串或浮点数,则至少需要两个参数而 min() 会返回这些值中最小的一个。可以比较无限多个值。
二、实例代码比较
(1)一维数组比较
//比较一维数组的值
$arr1 = array(1,2,5,7,9);
$max = max($arr1);
$min = min($arr1);
var_dump($max); //9
var_dump($min); // 1
(2)比较简单的二维数组
$arr2 = array(
array(
'code'=>"040100000045"
),
array(
'code'=>"040100000046"
),
array(
'code'=>"040100000047"
),
array(
'code'=>"040100000048"
)
);
$max1 = max($arr2);
$min1 = min($arr2);
echo '<br/>';
echo '<br/>';
var_dump($max1); //array(1) { ["code"]=> string(12) "040100000048" }
var_dump($min1); //array(1) { ["code"]=> string(12) "040100000045" }
这里发现,单字段的二维数组也是可以比较的。我们可以把我们需要进行比较的字段赋值到一个新的数组中,然后用max(),或者min()函数。
(3)稍复杂的二维数组
$arr2 = array(
array(
'code'=>"040100000045",
'type'=>"二货",
),
array(
'code'=>"040100000048",
'type'=>"吃货",
),
array(
'code'=>"040100000047",
'type'=>"三货",
),
array(
'code'=>"040100000046",
'type'=>"四货",
)
);
$max2 = max($arr2);
$min2 = min($arr2);
echo '<br/>';
echo '<br/>';
//输出结果:array(2) { ["code"]=> string(12) "040100000048" ["type"]=> string(6) "吃货" }
var_dump($max2);
// 输出结果:array(2) { ["code"]=> string(12) "040100000045" ["type"]=> string(6) "二货" }
var_dump($min2);
这里我们可以发现,比较的结果还是正常的。那么我们继续试验。
(4)更复杂的数组比较
$arr3 = array(
array(
'test'=>"试一试",
'code'=>"040100000045",
'type'=>"二货",
),
array(
'test'=>"试二试",
'code'=>"040100000048",
'type'=>"吃货",
),
array(
'test'=>"试三试",
'code'=>"040100000047",
'type'=>"三货",
),
array(
'test'=>"试四试",
'code'=>"040100000046",
'type'=>"四货",
)
);
$max3 = max($arr3);
$min3 = min($arr3);
echo '<br/>';
echo '<br/>';
//输出结果:array(3) { ["test"]=> string(9) "试四试" ["code"]=> string(12) "040100000046" ["type"]=> string(6) "四货" }
var_dump($max3);
//输出结果:array(3) { ["test"]=> string(9) "试一试" ["code"]=> string(12) "040100000045" ["type"]=> string(6) "二货" }
var_dump($min3);
这里我们发现,code的排序已经不再准确了,取而代之的是,test字段反而是按照最大最小值打印的。这里我们可以发现,max和min函数的比较是从左到右比较的。特别是对于二维数组来说,都是先比较第一个字段的值。
(5)测试,第一个字段都相同的数组
//第一个字段都相同的数组
$arr4 = array(
array(
'test'=>"试一试",
'code'=>"040100000045",
'type'=>"二货",
),
array(
'test'=>"试一试",
'code'=>"040100000048",
'type'=>"吃货",
),
array(
'test'=>"试一试",
'code'=>"040100000047",
'type'=>"三货",
),
array(
'test'=>"试一试",
'code'=>"040100000046",
'type'=>"四货",
)
);
$max4 = max($arr4);
$min4 = min($arr4);
echo '<br/>';
echo '<br/>';
//输出结果:array(3) { ["test"]=> string(9) "试一试" ["code"]=> string(12) "040100000048" ["type"]=> string(6) "吃货" }
var_dump($max4);
//输出结果: array(3) { ["test"]=> string(9) "试一试" ["code"]=> string(12) "040100000045" ["type"]=> string(6) "二货" }
var_dump($min4);
这里就显而易见了。max和min函数就是从左到右先比较第一组,如果第一组相同的话,就比较第二组。而后输出结果。
max()函数和min()函数做简单的比较还不错,如果需要对多维数组中的每个值都排序的话,那么用max和min显然就不太合适了。
三、php获取二维数组具体字段的最大值
//这里的$code是一个二维数组,我们需要取出里面code字段的最大值
//先获取$code[0]中的code值
$max = $code[0]['code'];
//循环$code字段,然后比较循环后的值
foreach ($code as $k => $v) {
if ($v > $max) {
//循环比较,取最大值
$max = $v;
}
}
//此时获取的$max是一个数组,下面取出数组中的'code'字符串
$max = $max['code'];
}
return $max;
end