max函数问题

aleckhao 软件开发工程师  2009-08-12 11:16:27
我的一本PHP的书上讲max函数,说php会将非数值的字符串当成0,如果多个参数都求值为0且是最大值则返回数值的0.但是所给的3个例子,如下:
echo max(0,"happy"); //结果返回0
echo max("happy",0); //结果返回happy
echo max("happy",0,"help"); //返回help
这个怎么解释?
...全文
59 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CunningBoy 2009-08-12
手册中只给出两个参数的例子:
echo max(0, 'hello'); // 0
echo max('hello', 0); // hello
echo max(-1, 'hello'); // hello

刚刚试了一下
如果0放在所有字母的前面,则输出0,如果不是在输出字母表顺序最大的一个
echo(0, "happy", "help") // 输出0
echo("happy", "help", 0) // 输出help
echo(0, -1, "help") //输出0
echo(-1, 0, "help") //输出0
echo(-1, "help", 0) //输出help
回复
aleckhao 2009-08-12
“PHP 会将非数值的 string 当成 0,但如果这个正是最大的数值则仍然会返回一个字符串。”
既max(-10,"happy" 则返回happy;
“如果多个参数都求值为 0 且是最大值,max() 会返回其中数值的 0,如果参数中没有数值的 0,则返回按字母表顺序最大的字符串。”
那岂不第3种情况都返回0?
回复
woshiguozhongbin 2009-08-12
max() 返回参数中数值最大的值。

如果仅有一个参数且为数组,max() 返回该数组中最大的值。如果第一个参数是整数、字符串或浮点数,则至少需要两个参数而 max() 会返回这些值中最大的一个。可以比较无限多个值。
回复
CunningBoy 2009-08-12
你理解错了吧,PHP手册的原文是:
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 highest value. If multiple arguments evaluate to 0, max() will return a numeric 0 if given, else the alphabetical highest string value will be returned.
-----------------
红色这句说的就是返回字符串。
你的第三个例子应该是有两个字符串,返回最后比较的一个。
回复
aleckhao 2009-08-12
恩,我也试了得出了和楼上一样的结论,从结论中我推测它是用冒泡排序的方法找出最大值或最小值,后面的参数只跟目前已发现的第一个最大的比较,如果相等则还按已发现的最大的算,这样,最大的都是0的话,如果第一个是数值0,后面的不管是0还是字符串与之相比都会得出0,如果第一个不是数值0,是字符串,则会按字母表中最大的算。
看来,参考手册上的也不是完全正确的,“实践是检验真理的唯一标准”,“尽信书不如无书”啊,O(∩_∩)O哈哈~
回复
aleckhao 2009-08-12
恩,我也试了得出了和楼上一样的结论,从结论中我推测它是用冒泡排序的方法找出最大值或最小值,后面的参数只跟目前已发现的第一个最大的比较,如果相等则还按已发现的最大的算,这样,最大的都是0的话,如果第一个是数值0,后面的不管是0还是字符串与之相比都会得出0,如果第一个不是数值0,是字符串,则会按字母表中最大的算。
看来,参考手册上的也不是完全正确的,“实践是检验真理的唯一标准”,“尽信书不如无书”啊,O(∩_∩)O哈哈~
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告