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’
所有其他示例都适用相同的规则.