2012-01-15 102 views
1

我有這些代碼:PHP如果條件語法錯誤

<?php 
$i=0; 
while (true): 
    echo "test"; 
    $i<4 ? $i++ : break; 
endwhile; 
?> 

錯誤消息: 解析錯誤:語法錯誤,在C意想不到T_BREAK:\ XAMPP \ htdocs中\上線數據\的index.php 5

if語句存在語法錯誤,我真的可以弄清楚什麼。任何人都可以幫忙。非常感謝。

+1

當人們被告知'? :'是「就像if-else一樣」 – Esailija 2012-01-15 19:03:52

回答

4

三元運算符用於賦值或返回一個值。您不能將break置於三元操作的else (:)案例中。

// Assignment 
$x = $i<4 ? $i : 0; 
// For a value returned into a function argument $i or 0 
do_something($i<4 ? $i : 0); 

它不能用於含有一種語言結構,如你與break做定期else情況。相反,使用常規的if()

$i = 0; 
while (true): 
    if ($i<4) { 
    $i++ 
    } 
    else { 
    break; 
    } 
endwhile; 
+0

希望你不介意編輯,否則你的支持不一致。 – Esailija 2012-01-15 19:06:59

+0

我認爲使用三元表達式的返回值不是強制性的。因此,它可以用作獨立聲明。 – linepogl 2012-01-15 19:08:08

1

的語法三元運算符是這樣的:

你的榜樣的問題是,break不是一個表達式,但聲明。如果你有一個表達式,你的語法可以工作,儘管它看起來很尷尬。無論如何,我會建議一個正常的if