2012-01-15 3 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-like"와 같다. – Esailija

답변

4

3 진 연산자는 할당 또는 값을 반환하는 데 사용됩니다. 터널링 작업의 경우 else (:)break을 배치 할 수 없습니다.

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

3 진 표현식의 반환 값을 사용하는 것은 의무 사항이 아니라고 생각합니다. 따라서 독립 실행 형 문으로 사용할 수 있습니다. – linepogl

1

구문을 사용하면 해당 같다 : 귀하의 예제와

ternary_expression ::= boolean_expression ? expression : expression 

문제는 break 표현식하지만 문이 아닌 것입니다. 어색하게 보일지라도 표현이 있다면 구문이 작동 할 수 있습니다. 나는 보통의 경우 if을 제안 할 것입니다.