可能是一个愚蠢的问题,但有更聪明的方法来检查 图像1360x455在我定义的两个其他数字的允许容差范围内是+ -10? :
<?php
$w = 1360;
$h = 455;
$cw = 1360;
$ch = 460;
$tol = 10; //px
if ((int) $w >= (int) ($cw-$tol) && (int) $w <= (int) ($cw+$tol) &&
(int) $h >= (int) ($ch-$tol) && (int) $h <= (int) ($ch+$tol)) {
echo "you are within the tolerance {$cw}x{$ch}px by +-{$tol} px.";
};
所以我基本上只想确保用户在上传时不会超出这些范围。上面的代码工作,只是想知道我是否可以更聪明。该方法在传入时已经知道了这些值。
答案 0 :(得分:3)
更简洁的方法是根据参考值减去输入值,并确保结果的绝对值(abs()
)小于或等于容差。
参考值与输入值之间的差值必须在10之内,减去它们将产生正整数或负整数。使用abs()
删除其符号,因此与公差值进行简单的<=
比较。
$w = 1360;
$h = 455;
$cw = 1360;
$ch = 460;
$tol = 10; //px
if (abs($cw - $w) <= $tol && abs($ch - $h) <= $tol) {
echo "you are within the tolerance {$cw}x{$ch}px by +-{$tol} px.";
}
此处通常不需要使用(int)
进行投射。但是如果你的函数可能正在接收字符串值,我建议在计算之前将变量转换为整数,以减少混乱。