php的max,min函数详解

一、定义

(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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值