2016-09-08 4 views
1
use DateTime::Format::Natural; 
$parser = new DateTime::Format::Natural; 
$dt = $parser->parse_datetime("1 Test 2010"); 
print "Date: " . ($dt->dmy('/') if $parser->success); 

왜 마지막 줄이 컴파일되지 않습니까?if 문을 string으로 연결하는 방법?

+1

친절하게 대답을 수락하여 질문을 닫습니다. 참조 : http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

답변

5

if의 형식이 명령문 한정자이기 때문에 컴파일되지 않습니다. 표현식의 끝 부분에서만 사용할 수 있으며 표현식의 다른 부분에서는 사용할 수 없습니다.

print "Date: " . ($parser->success ? $dt->dmy('/') : ''); 

또는 :

당신은 할 수

print "Date: " . do { $dt->dmy('/') if $parser->success }; 

(후자가 거짓이면 $ parser->의 성공을 인쇄하려고합니다, 그리고 그것을 인쇄 할 수 있지만 "날짜 : 0 ").

1

아마도 여기에 삼항 연산자를 사용합니까?

print 'Date: ' . ($parser->success ? $dt->dmy('/') : ''); 

또는 코드를 두 문장으로 나눕니다.

print 'Date: '; 
print $dt->dmy('/') if $parser->success;