2012-01-15 17 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

これは、人々が「? : 'is"と同じように "else" – Esailija

答えて

4

三項演算子は、代入や値の返り値として使用されます。三角操作の場合は、breakelse (:)に配置することはできません。

// 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

あなたが編集を気にしないといいですね、if elseに矛盾があります。 – Esailija

+0

私は三項式の戻り値を使うことは必須ではないと思います。したがって、スタンドアローンステートメントとして使用できます。 – linepogl

1

構文を使用すると、そのようなものです:あなたの例で

問題はbreakは表現が、声明ではないということです。代わりに式があればあなたの構文はうまくいくかもしれませんが、あなたの構文はうまくいくでしょう。私はどんな場合でも通常のifを提案します。