PHP   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP max()和min()使用不同类型的奇怪行为大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
过去两个小时我一直在摸索这个行为:
echo 'max(1,"a","2"   ) : '; var_dump( max( 1,'a','2' ) );
echo 'max(1,"2","a"   ) : '; var_dump( max( 1,'2','a' ) );
echo 'max(   "a",1) : '; var_dump( max( 'a',1 ) );
echo 'max(   "2",1) : '; var_dump( max( '2',1 ) );
echo "\n";
echo 'min(1,"2"   ) : '; var_dump( min( 1,'2' ) );
echo 'min(1,"a"   ) : '; var_dump( min( 1,'a' ) );
echo 'min(   "a",1) : '; var_dump( min( 'a',1 ) );
echo 'min(   "2",1) : '; var_dump( min( '2',1 ) );

打印出来:

@H_930_2@max(1,"2" ) : String(1) "2" max(1,"a" ) : String(1) "a" max( "a",1) : int(1) max( "2",1) : int(1) min(1,"2" ) : String(1) "2" min(1,"a" ) : String(1) "a" min( "a",1) : int(1) min( "2",1) : int(1)

当我期待:

@H_930_2@max(1,"a" ) : String(1) "2" max( "a",1) : String(1) "2" max( "2",1) : String(1) "2" min(1,"2" ) : String(1) "a" min(1,1) : String(1) "a" min( "2",1) : String(1) "a"

请注意,max()和min()函数的值始终相同,但顺序不同.

此外,根据文档,与整数相比,不以数字字符开头的字符串被评估为整数0,但是字母数字比较多个字符串值.资源:

> http://php.net/manual/en/function.max.php
> http://php.net/manual/en/function.min.php

如何解释这个输出?

解决方法

min()max()中的比较按顺序进行,因为这可以在源代码中看到:

min() source code

//...
min = &args[0];

for (i = 1; i < argc; i++) {
    is_smaller_function(&result,&args[i],min);
    if (Z_TYPE(result) == IS_TRUE) {
        min = &args[i];
    }
}
//...

max() source code

//...
max = &args[0];

for (i = 1; i < argc; i++) {
    is_smaller_or_equal_function(&result,maX);
    if (Z_TYPE(result) == IS_falSE) {
        max = &args[i];
    }
}
//...

因此,您可以看到该函数通过数组并检查下一个值是否小于/大于先前最小/最大保存值.

要了解如何获得这些结果,您还必须知道值的比较是在PHP type juggling.之后完成的

那么让我们看两个例子来看看这些函数是如何工作的:

例1

@H_930_2@max ( 1,'2' ) │ │ │ 1 > 'a' │ │ │ 1 < '2' │ └ Result: '2'

>比较1和’a’,数字上下文表示’a’转换为0,1表示大于0.
→int 1返回
>比较1和’2′,数字字符串表示’2’转换为2,2,大于1.
→返回字符串’2′

>结果:字符串’2′

例2

@H_930_2@max ( 1,'a' ) │ │ │ 1 < '2' │ │ │ '2' < 'a' │ └ Result: 'a'

>比较1和’2′,大于1.
→返回字符串’2′
>比较’2’和’a’,两个字符串均表示字符串比较,’a’与ASCII values相比大于’2′.
→返回字符串’a’

>结果:字符串’a’

所有其他示例都适用相同的规则.

大佬总结

以上是大佬教程为你收集整理的PHP max()和min()使用不同类型的奇怪行为全部内容,希望文章能够帮你解决PHP max()和min()使用不同类型的奇怪行为所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。