2010-03-30 135 views
0

我如果條件語句php:這是否正確?

if ((strlen($data[70])>0) || ((remove19((trim($data[29])) == '7135556666')) && isLongDistance($data[8])) ) 

其中$的數據是從數據庫中記錄如下。

我的目標是包括所有行$數據[70]不爲空,也包括行,其中$數據[29] = 713555666個& & $數據[8] isLongDistance = TRUE

我的問題是,如果isLongDistance($ data [8])返回false,它是否會返回該行,因爲$ data [70]不是空白的?

在此先感謝

回答

3

是的,因爲你正在做的OR。你的陳述將減少爲「真或者(真和假)」,這將是真實的。

0

是的,因爲你有一個OR操作符。

0

如果第一件事返回TRUE,那麼if將成功。如果第一個事件返回FALSE,那麼它將在OR之後執行該部分,如果該數字是正確的並且該函數返回TRUE,那麼它將成功。

無論如何,我將覆蓋像這樣

if (!empty($data[70]) or ((int)$data[29] == 7135556666 and isLongDistance($data[8])) 
+0

如果$ data [70] ='0',empty()將評估爲true。也許他的申請必須認爲這是一個有效的價值,因此strlen()。 remove19可能會做一些重要的事情,或許不應該被刪除。而且,將$ data [29]轉換爲int時,它將包含7135556666.43。也許他需要這樣的價值來評估爲假。我們不知道。此外,應該讓phill知道||和&&具有不同於「或」和「和」的運算符優先級,並且在長條件語句中也可以更易讀。 – webbiedave 2010-03-30 21:27:41

0

是的。但要真正理解它編寫人類可以理解的代碼,不要只爲計算機編寫代碼。

考慮這個簡單的版本。

$dataLenght = strlen($data[70]); 
$remove19  = remove19((trim($data[29]); 
$longDistance = isLongDistance($data[8]); 


if ($dataLenght > 0) // your first OR if false it would goto elseif statement 
{ 
    //condition 
} 

elseif($remove19 == '7135556666' && $longDistance) // your second statement 
{ 
    //conditon 

}