試圖減少長條件。 任何關於我如何使這個條件清潔的建議?最好的方法來寫這個條件
if (!($replacement === null || $replacement === '') && strpos($replacement, 'unknown') === FALSE) {
...
}
試圖減少長條件。 任何關於我如何使這個條件清潔的建議?最好的方法來寫這個條件
if (!($replacement === null || $replacement === '') && strpos($replacement, 'unknown') === FALSE) {
...
}
您的代碼會導致錯誤,如果$replacement
是一個數組或對象(沒有__toString()
法):
[email protected]:~$ 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)
{
}
我會避免混合||
和&&
,而是有機結合起來的所有條件&&
:
if ( $replacement !== null
&& $replacement !== ''
&& strpos($replacement, 'unknown') === FALSE) {
...
}
這使得查看哪些條件按照哪個順序被檢查是非常直接的。
if (is_string($replacement)) {
if ($replacement != "" && $replacement != "unknown") {
// TODO Here
}
}
看起來不錯..... – hek2mgl
不,我得到了邏輯錯誤(或者他可能)。 – Barmar
'if(!in_array($ replacement,['',null,'unknown'])){...} – moonwave99