【发布时间】:2013-06-01 23:42:13
【问题描述】:
这两个函数有逻辑上的区别吗?
min ( $a , $b , $c ) ;
和
min ( $a , min ( $b , $c ) ) ;
编辑
目前正在开发一个小类来管理 color 对象,用于在颜色空间之间操作通道值,例如 ; RGBtoHEX、RGBtoCMYK 等...当我在寻找一些示例代码以更好地理解转换算法时,许多编写的函数都实现了第二种方法来计算最小值,给定 RGB 通道的最大值,如 ;
$min = min ( $R , min ( $G , $B ) ) ;
所以;假设以下函数是否返回相同的$min 值是否安全?
$min = min ( $R , $G , $B ) ;
【问题讨论】:
-
不,它们的结果应该相同。不过,第一个应该更有效。
-
just min(2, 1, -2) == min(min(2,1), -2) ,这些都是相等的,导致相同的结果,在 min() 中也可以比较无限数量的值。 (根据文档)
-
@raina77ow:你完全正确,他们应该是相同的。事实是它们不是:
min('0', 0, '.') !== min('0', min(0, '.'))(如PleaseStand suggests in the answer)。证明:ideone.com/PZeSQI -
您可能看到
min(a,min(b,c))的原因是在许多库中,min()函数只能接受两个参数。在 PHP 中,它们是相同的,除了比较混合数据类型的任何奇怪的边缘情况。 -
@Matthew link 这些是开源 .NET 扩展的颜色算法。我见过很多只用 2 个参数用各种语言编写的,但也有很多是用 PHP 编写的。我认为有很多类似的 bad-formed PHP 函数被粗心地从任何其他语言或彼此移植而来。感谢您指出这一限制。