PHP:避免被零除的优雅方法

标签 php

与此站点非常相似,我当前的项目具有声誉,在我正在处理的脚本中,我需要计算两个用户声誉之间的比率。

$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);

我为什么要这样做?

  1. 注意我的代码仍然可以正常工作!避免生产代码的“智能功能”。
  2. 因为有人认为有“更好的答案”并不意味着他们有!

我不介意维护别人的代码!这就是真实的世界!我们必须这样做。我发布它是因为:
我真的在努力帮助程序员学习。

//我对发布内容的“改进”的看法...

imo,你的建议和我的方法不一样!我特别使用了“max”,因为它强制限制了一个数字范围。您也可以嵌套“min”和“max”函数以强制限制范围。

您的方法是一种“选择”,而不是我为什么会做我所做的答案。 :)

关于PHP:避免被零除的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24205711/

相关文章:

javascript - 如何从调用 php 函数的 javascript 中显示数据?

php - Magento - 从购物车中删除产品

php - 在 laravel Blade 模板中动态更改每个用户的背景图像

php - mysqli bind_param 中的动态变量绑定(bind)

javascript - 事件模式 Bootstrap 后无法更改 td 中的值

php - 使用 jquery ajax 发送数组

php - 在给定可能重复项的情况下选择表中前 100 个最大值

php - Mysql 查询将返回数据库中时间戳之间的空闲槽

php - 如何验证键名中带有点的数组? (拉拉维尔)

php - 为 foreach() 提供的参数无效..Wordpress