写这个有条件的最干净的方法

时间:2013-11-15 17:58:39

标签: php conditional-statements

试图减少长条件。 关于如何制作这种条件清洁剂的任何建议?

 if (!($replacement === null || $replacement === '') && strpos($replacement, 'unknown') === FALSE) {
... 
}

3 个答案:

答案 0 :(得分:0)

如果$replacement是数组或对象(没有__toString()方法),则代码会导致错误:

hek2mgl@server:~$ php -a
Interactive shell

php > strpos(array(), '');

Warning: strpos() expects parameter 1 to be string, Array given in php shell code on line 1

Call Stack:
   10.7258     636424   1. {main}() php shell code:0
   10.8469     637640   2. strpos() php shell code:1

您需要检查$replacement是否为字符串。这使得您的代码能够在$replacement可能是数组或对象的情况下(无论出于何种原因)证明并保存=== null支票:

if (is_string($replacement) 
    && !empty($replacement)
    && strpos($replacement, 'unknown') === FALSE)
{

}

答案 1 :(得分:0)

我会避免混合||&&,而是将所有条件与&&结合起来:

if (   $replacement !== null 
    && $replacement !== ''
    && strpos($replacement, 'unknown') === FALSE) {
  ...
}

这样可以非常直接地查看以哪种顺序检查哪些条件。

答案 2 :(得分:-1)

    if ( is_string($replacement)) {
        if ($replacement != "" && $replacement != "unknown") {
        // TODO Here
    }
    }