php过滤器 min max,PHP max()和min()使用不同类型的奇怪行为

min()和

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

//...

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 = &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

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

max ( 1,'a' )

│ │ │

1 < '2' │

│ │

'2' < 'a'

└ Result: 'a'

>比较1和’2′,大于1.

→返回字符串’2′

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

→返回字符串’a’

>结果:字符串’a’

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值