比较数字和容差

时间:2017-09-07 01:56:07

标签: php

可能是一个愚蠢的问题,但有更聪明的方法来检查 图像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.";
};

所以我基本上只想确保用户在上传时不会超出这些范围。上面的代码工作,只是想知道我是否可以更聪明。该方法在传入时已经知道了这些值。

1 个答案:

答案 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)进行投射。但是如果你的函数可能正在接收字符串值,我建议在计算之前将变量转换为整数,以减少混乱。