Bun Wong's Blog

专注于 Web 应用程序开发

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

今天群里又有人提问 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 0if 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 0is returned.

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

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

000000

支持

鸡蛋

路过

雷人

我晕

好帅

留言 (0)

    发表留言

    Google Analytics

    最近一个月访问数:720

    Ads