2013-04-18 15 views
16

今日、面白いコードをいくつか見つけました。私はこれがPHPの機能であるか、何かが欠けているかどうかを調べようとしましたが、Google上で何かを見つけることができませんでした。おそらく私はそれの名前を知らないので。ifステートメントの変数を設定する

コード

if($logo = \Repositories\Logo::getLogoData($id)){ 
    $logo_href = $logo->link; 
} 

変数$logoがどこにも設定されていません。このifステートメントの式は、そのクラスメソッドが何かを返すかどうかをチェックすると同時に、変数$logoをステートメントで使用するように設定しているようです。

これは本当ですか?もしそうなら、これは世界で何と呼ばれていますか?

+2

まず、割り当てられた結果である割り当ての戻り値を評価します。 – bwoebi

答えて

16

条件式のような割り当てを行うことができます。論理的には、値が$logoに割り当てられ、次に$logoが真実であるかどうかが評価されます。真実であれば、条件付きのコードが実行されます。

データベースの結果セットをループする場合には、このような割り当て/評価が頻繁に行われますが、一般的に、gコードを読みやすくするために、このような一般的な使用例の外では避けるべきです。

+0

それは私が思ったことですが、私はそれについての公式の文書を見つけることができないようです。それの名前はありますか?私はそれについてのドキュメントを読んでみたい。 –

+1

@ChrisB:代入演算子の仕組みです。割り当てられた値を返します。 Doc:http://php.net/manual/en/language.operators.assignment.php –

+0

@RocketHazmat私は、あなたがifステートメントの式の中でそれを実行できるかどうか分かりませんでした。 –

1

はい、これは機能です。それはようなものだ:

$a=$b=5;

しかし、この場合には、変数$ Aとして場合のブール結果を想像してみてください。

しかし、IDEは非常に一般的なバグの原因として== vs =のため、このような解決策について不平を言っています。

関連する問題