试图减少长条件。 关于如何制作这种条件清洁剂的任何建议?
if (!($replacement === null || $replacement === '') && strpos($replacement, 'unknown') === FALSE) {
...
}
答案 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
}
}