Home >Backend Development >PHP Tutorial >php 在使用if判断的时候 如果是多个逻辑或(||)条件 有没有简写的方法

php 在使用if判断的时候 如果是多个逻辑或(||)条件 有没有简写的方法

WBOY
WBOYOriginal
2016-06-06 20:39:322518browse

比如

<code> $order['status'] == 9 || $order['status'] == 10 || $order['status'] == 11
</code>

类似这种的话,如果两三个还勉强可以接受,但是如果还有 3 个以上的条件我就无法接受这种写法了。
后来使用了 in_array()的方法相对简短一点了。

想来请教下 php 中 有没有比 in_array()再好点的写法了。谢谢

回复内容:

比如

<code> $order['status'] == 9 || $order['status'] == 10 || $order['status'] == 11
</code>

类似这种的话,如果两三个还勉强可以接受,但是如果还有 3 个以上的条件我就无法接受这种写法了。
后来使用了 in_array()的方法相对简短一点了。

想来请教下 php 中 有没有比 in_array()再好点的写法了。谢谢

酱?

<code>php</code><code>switch($order['status']){
    case FINISHED:
    case PENDING:
    case PROCESSING:
        //logic
        break;
    default:
        break;
}
</code>

难道不是 in_array($order['status'], [9, 10, 11])

像你这个例子, 改成switch就行了,简单直观还合理;

如果条件太多无可避免的情况,即只能用if,就算用别的也感觉别扭不对劲的时候, 建议换一种写法:

<code>if ($order['status'] == 9 
    || $order['status'] == 10 
    || $order['status'] == 11) {

}
</code>

我是花括号部另起一行党, 但在这种情况下,也可以

<code>if ($order['status'] == 9 
    || $order['status'] == 10 
    || $order['status'] == 11) 
{

}
</code>

另外建议把字面量常量放在左边。

如果if里的判断条件特别特别长(我见过有些分支需要判断三四个变量,||和&&用了七八个),建议把判断条件写成单独的函数

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn