作者 : Bun Wong
日期 : 2009年08月05日
标签 : PHP
浏览 : 1182 次
评论 : 0 个
http://www.hdwong.com/article/php-max-min.html

关于 max/min 函数的运算规则

技术交流 @ 2009年08月05日 收藏&分享

今天群里又有人提问 min() 的用法,本以为很理解,就是求出一个集合之中的最小值,比如我们常用的对一个数组或者对一堆数值中调用 min()

min(array(3, 2, 1, 0));
min(3, 4, 5, 6);

因为要比较的值的类型都相同,运算结果也显然易见。而如下这种比较的值中存在不同类型的,的确比较少用

min(1, 1.1, 'a1', '1.1');

运算结果是 '1.1',查阅官方手册,里面有一段提示

Note: PHP will evaluate a non-numeric string as 0 if compared to integer, but still return the string if it's seen as the numerically lowest value. If multiple arguments evaluate to 0, min() will return the lowest alphanumerical string value if any strings are given, else a numeric 0 is returned.

当比较的值里面存在非数值字符串 (如上例中的 'a1'),那么字符串将转换成 0 来比较,但返回值依然是这个字符串。还有需要注意的是,如果有字符串转换成 0 且是最小,那么所有字符串 (包括数值字符串,如上例中的 '1.1') 将按照 ASCII 编码来排序,并返回其中的最小值。因此上例中遇到 'a1' 需要转换为 0,且是最小值 (0 < 1, 0 < 1.1),那么所有的字符串将进行 ASCII 一次排序并返回最小值,因此返回 '1.1'。

max() 运算规则是一样的,不同的只是求出最大值。

评论 (0)

还没有评论

* 昵称:

* 评论:

* 验证码: (请输入下图的 4 位数字)

Captcha看不请, 换一张

© 2011 Bun Wong

本博客基于 Bun PHP Framework 构建 • 粤ICP备07036370号