与此站点非常相似,我当前的项目具有声誉,在我正在处理的脚本中,我需要计算两个用户声誉之间的比率。
$attacker->ratio = $defender->rep / $attacker->rep;
$defender->ratio = $attacker->rep / $defender->rep;
在这样做的过程中,我有时可能会以除数的声誉为 0 告终,这很糟糕!
显然我可以添加一些检查,但我想知道是否还没有发明更漂亮的解决方案,比如 @
infront,但我知道这不是一个好主意..
最佳答案
假设正数有效,则确保最低除数为 1。
$defender->ratio = $attacker->rep / max($defender->rep, 1);
//----------------------------------------
别人推荐的代码,
@php_nub_qq 建议替代代码...
在今天的 php 中
$defender->ratio = $attacker->rep / ($defender->rep ?? 1);
唉,@php_nub_qq 提供的这段代码在 PHP 7.4 中不起作用;-(请参阅评论中的@OceanBt...我感谢他们的更正!:)
所以,我在这里维护我从未感兴趣的代码。现在,显示为特定于 PHP 版本!这是更正...
$y = 100/($x ?: 1);
我为什么要这样做?
- 注意我的代码仍然可以正常工作!避免生产代码的“智能功能”。
- 因为有人认为有“更好的答案”并不意味着他们有!
我不介意维护别人的代码!这就是真实的世界!我们必须这样做。我发布它是因为:
我真的在努力帮助程序员学习。
//我对发布内容的“改进”的看法...
imo,你的建议和我的方法不一样!我特别使用了“max”,因为它强制限制了一个数字范围。您也可以嵌套“min”和“max”函数以强制限制范围。
您的方法是一种“选择”,而不是我为什么会做我所做的答案。 :)
关于PHP:避免被零除的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24205711/