我的一本PHP的书上讲max函数,说php会将非数值的字符串当成0,如果多个参数都求值为0且是最大值则返回数值的0.但是所给的3个例子,如下:
echo max(0,"happy");                  //结果返回0
echo max("happy",0);                  //结果返回happy
echo max("happy",0,"help");           //返回help
这个怎么解释?

解决方案 »

  1.   

    你理解错了吧,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. 
    -----------------
    红色这句说的就是返回字符串。
    你的第三个例子应该是有两个字符串,返回最后比较的一个。
      

  2.   

    max() 返回参数中数值最大的值。如果仅有一个参数且为数组,max() 返回该数组中最大的值。如果第一个参数是整数、字符串或浮点数,则至少需要两个参数而 max() 会返回这些值中最大的一个。可以比较无限多个值。
      

  3.   

    “PHP 会将非数值的 string 当成 0,但如果这个正是最大的数值则仍然会返回一个字符串。”
    既max(-10,"happy" 则返回happy;
    “如果多个参数都求值为 0 且是最大值,max() 会返回其中数值的 0,如果参数中没有数值的 0,则返回按字母表顺序最大的字符串。”
    那岂不第3种情况都返回0?
      

  4.   

    手册中只给出两个参数的例子:
    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