php的max,min函数详解

来源:互联网 发布:证件照制作软件 编辑:程序博客网 时间:2024/04/29 16:16

一、定义

(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

原创粉丝点击