就像这个网站一样,我当前的项目有声誉,在我正在编写的脚本中,我需要计算两个用户声誉之间的比例.
$attacker->ratio = $defender->rep / $attacker->rep;
$defender->ratio = $attacker->rep / $defender->rep;
Run Code Online (Sandbox Code Playgroud)
在这样做的过程中,我偶尔可能会将除数的声誉归为0,这很糟糕!
显然我可以添加几个支票,但我想知道是否还没有发明更漂亮的解决方案,比如@盈方,但我知道这不是一个好主意.
Rya*_*ent 22
假设正数有效,则确保最低的除数值为1.
$defender->ratio = $attacker->rep / max($defender->rep, 1);
Run Code Online (Sandbox Code Playgroud)
mat*_*iit 12
这就是我这样做的方式.
$defender->ratio = ($defender->rep === 0) ? 0 : $attacker->rep / $defender->rep;
Run Code Online (Sandbox Code Playgroud)
如果您使用的是PHP> 5.3,则可以使用三元运算符 ?:
$attacker->ratio = $defender->rep / ($attacker->rep ?: 1);
$defender->ratio = $attacker->rep / ($defender->rep ?: 1);
Run Code Online (Sandbox Code Playgroud)
这意味着如果运算符之前的变量为false或为空,则将返回其后的值,否则将返回第一个值
下面的例子:
$attacker->rep = 0;
$defender->rep = 55;
$attacker->ratio = $defender->rep / ($attacker->rep ?: 1); // returns 55 / 1 = 55
$defender->ratio = $attacker->rep / ($defender->rep ?: 1); // returns 0 / 55 = 0
Run Code Online (Sandbox Code Playgroud)