0

あいまいな質問タイトルで申し訳ありません。この省略形のメソッドの実際の名前がわかりません。誰かがこれをどのように参照すべきかを明確にするのを手伝いたい場合は、喜んで質問のタイトルを変更します.

次のコード スニペットでは:

$account = $value->uid ? user_load($value->uid) : '';

このコードが何をするのか少し混乱しています。これが私が思うことです: if $value->uid exists then $account = user_load($value->uid) else $account = ''

あれは正しいですか?

4

6 に答える 6

3

以下と同じです:

if ($value->uid) {
    $account = user_load($value->uid);
} else {
    $account = '';
}
于 2013-09-27T18:52:50.303 に答える
3

それらは三項ステートメントと呼ばれます。そして、はい、あなたはほとんど正しいです。ほとんど

$value->uid存在$account = user_load($value->uid)する場合$account = ''

これはより正しいでしょう:

の出力が の場合は$value->uidTRUEそう$account = user_load($value->uid)でない場合は、$account = ''


通常のif/elseブロックを使用すると、次のようになります。

if( $value->uid ) {
    $account = user_load($value->uid);
} else {
    $account = '';
}

ドキュメントはここにあります。

于 2013-09-27T18:52:58.320 に答える
1

三項演算子といいます。

このリンクを参照してください: http://davidwalsh.name/php-shorthand-if-else-ternary-operators

于 2013-09-27T18:53:19.320 に答える
1

これは三項演算子と呼ばれます。

これは、$value->uidtrueの場合、 を意味し$account = user_load($value->uid)ます。そうでなければ、$account = ''.

これらの値は、PHP では「偽」と見なされます。

  • ヌル
  • 0
  • 0.0
  • 「0」
  • ""
  • 間違い
  • 配列()
于 2013-09-27T18:53:38.733 に答える
1

これは PHP の三項演算子であり、他の言語の三項演算子とほとんど同じように機能します。

$value = ($test_value) ? 'true result' : 'false result';

と完全に同等です

if ($test_value) {
    $value = 'true result';
} else {
    $value = 'false result';
}
于 2013-09-27T18:53:53.777 に答える
1

あなたの仮定は部分的に正しいです。

$account = $value->uid ? user_load($value->uid) : '';

と同じです

if ($value->uid) {
  $account = user_load($value->uid);
} else  {
  $account = '';
}

変数が存在するかどうかをチェックするだけではif ($value->uid)ありません。変数がundefinednullfalse0またはの場合は false を返します''(おそらくここで忘れているものもあります)。

于 2013-09-27T18:55:30.057 に答える