奇怪的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-7 最大值和最小值
1
收起
正在回答
2回答
你好,PHP中两个数字型字符串比较时(只含数字字符串)进行比较的时候是直接进转换成数值进行比较,所以122<"123",
如果是字符串行数字和字母比较字母永远大于数字如
echo max("b","123342342423") //输出 b
如果 是字母和整形数字比较这字母永远小于数字
echo max("b",1) //输出 1
如果字母和整数比较字母会被强制转化成0;
echo max("b",-1) //输出 b
如果解决您的问题请采纳,祝学习愉快!
PHP小白零基础入门
- 参与学习 人
- 提交作业 626 份
- 解答问题 4930 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星