2016-09-08 15 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文を文字列に連結する方法は?

+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 }; 

(後者は、それがfalseの場合は$ parser->成功を印刷しようとすると、それが印刷されても「日付:0 "その場合)。

1

おそらくここでは三項演算子を使用しますか?

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

または、コードを2つのステートメントに分割します。

print 'Date: '; 
print $dt->dmy('/') if $parser->success; 
関連する問題