奇怪的max()函数

奇怪的max()函数

因为看到max()的参数是mixed类型,我就觉得应该会进行自动转换,就抱着好奇心去随便玩了下

首先我随便打了各种类型的数据

echo max("123",122,"b",false);//此时输出了b 我就懵了,什么鬼!按理应该是123啊,因为b应该是转化为0啊
//然后查了下手册,说会把非数值的string转化为0,但如果这个string是最大值,就会返回这个string
//难道这里的b是最大值,我就想知道这里的b的值真的比123大?就用下面代码试了下
echo max("b",123); //但是此时输出了123 ,然后我把123换成了122,就输出了122
//这是我怀疑是不是数据类型的原因,然后我把123弄成字符串的形式
echo max("b","123");//此时输出的是b
//这是我就怀疑"123"是不是真的转化为了数值的123
echo max("123",122);//此时输出的是 123
//从上面的比较可以得出 122<"123"<"b"<122<123 但是在max("123",122,"b")里 "b" 却是最大的。
//但是如果把"123"改称数字的 123,max(123,122,"b"); 输出的就是123

现在比较来,比较去的都比较懵了。

请问老师:这么max的具体比较规则是怎样的?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好,PHP中两个数字型字符串比较时(只含数字字符串)进行比较的时候是直接进转换成数值进行比较,所以122<"123",

如果是字符串行数字和字母比较字母永远大于数字如

echo max("b","123342342423")   //输出 b

如果 是字母和整形数字比较这字母永远小于数字

echo max("b",1)  //输出  1

如果字母和整数比较字母会被强制转化成0;

echo max("b",-1)  //输出 b

如果解决您的问题请采纳,祝学习愉快!

guly 2018-07-18 14:14:49

你好,max() 返回参数中数值最大的值。 
      如果仅有一个参数且为数组,max() 返回该数组中最大的值。如果第一个参数是整数、字符串或浮点数,则至少需要两个参数而 max() 会返回这些值中最大的一个。可以比较无限多个值。如果解决您的问题请采纳,祝学习愉快!

  • 提问者 慕莱坞4272878 #1
    为什么 122<"123"<"b"<122<123 ?
    2018-07-18 14:17:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师