【发布时间】:2015-09-04 13:53:24
【问题描述】:
我遇到了一个难题,我通常只使用一堆 if 或 switch。
为了说明这一点,我目前正在进行的项目涉及比较图像的宽度和高度以获取一个数字,以确定宽度是否比高度长或相同。
到目前为止,这是我的代码:
private function compare($width, $height)
{
return $width - $height;
}
这正如您所料。
我想知道是否有更好的方法来做到这一点:
if($this->compare($this->width, $this->height) == 0)
{
}
if($this->compare($this->width, $this->height) < 0)
{
}
if($this->compare($this->width, $this->height) > 0)
{
}
谢谢
【问题讨论】:
-
为什么要麻烦进行第三次测试?只有 3 种可能性,所以只需使用
else.if (equal) else if (greater) else (...)`。一旦你消除了前两个可能性,它必须是 else,它小于。 -
这里的正常做法不是使用
if else else if,如if ($this->width > $this->height)等吗?不需要compare函数。 -
如果我有一个功能,我想知道“肖像”、“风景”或“正方形”。它会在代码 imo 中更好地阅读。只有我。
-
PHP7 将添加到您的选项中,并通过 spaceship (
<=>) 运算符为您提供更多选择 -
有时我发现已经引入了一些东西来让这样的事情变得更容易(比如@MarkBaker 即将发表的评论)。由于目前没有更好的解决方案,我会找到一种使用 ifs 和可能 elses 的方法,尽管我讨厌使用它们。
标签: php if-statement integer comparison