2013-06-01 22 views
1

是否有这两个功能之间的逻辑区别?PHP中嵌套的Min(),Max()函数之间是否存在逻辑差异?

min ($a , $b , $c) ; 

min ($a , min ($b , $c)) ; 

编辑

目前正在开发一个微小的类来管理一个颜色对象之间的色彩空间喜欢操纵信道值; RGBtoHEXRGBtoCMYK等...虽然我寻找一些示例代码做出关于转换算法更好地理解,许多的写入已经实现,以计算分钟第二种方法的功能,给定的RGB通道的最大值等;

$min = min ($R , min ($G , $B)) ; 

所以;如果以下函数返回相同的值$min,是否安全?

$min = min ($R , $G , $B) ; 
+4

没有,他们的结果应该是相同的。尽管如此,第一个应该更有效率。 – raina77ow

+0

just min(2,1,-2)== min(min(2,1),-2),这些全部相同,导致相同的结果,也在min()中您可以比较无限数量的值。 (根据文件) – Nifty

+0

@ raina77ow:你是完全正确的,他们应该是相同的。事实是他们不是:'min('0',0,'。')!== min('0',min(0,'。'))'(如[PleaseStand在答案中提示](http ://stackoverflow.com/a/16878508/548696))。证明:http://ideone.com/PZeSQI – Tadeck

回答

4

有差别,但它不太可能在实践中会遇到。从documentation

php> $a = '0'; $b = 0; $c = '.'; 
php> var_dump(min($b,$c)); 
int(0) 
php> var_dump(min($a,min($b,$c))); 
string(1) "0" 
php> var_dump(min($a,$b,$c)); 
string(1) "." 

相关报价:

如果比较整数PHP会将非数值的string当成0,但仍然会返回一个字符串,如果它看作是数字最低值。如果多个参数的计算结果为0,则在给定任何字符串时,min()将返回最小的字母数字字符串值,否则返回数字0。

+1

我不想开始激烈的战争,但这是PHP开发人员需要考虑的许多不一致之处。 'min($ a,$ b,$ c)!== min($ a,min($ b,$ c))'就是一个很好的例子。 Upvote去找你。 – Tadeck

+0

所以结果取决于我认为的变量。很高兴知道这两个函数不会产生相同的结果**无论这种情况如何。 – user1296236

+0

PHP的真正WTH在很多情况下是'min($ a,$ b)'!=='min($ b,$ a)'。 – raina77ow

相关问题