PHPで、$foo = isset($bar) ? $bar : 0; をもっと簡単にできないでしょうか。$barを2回書くのが気持ち悪いです。独自関数で function ($bar) { return isset($bar) ? $bar : 0; } みたいにやっても$barに値がセットされていなかった場合に上手くいきません。

登録日:2012-09-22 · カテゴリー:PHP・Perl・Ruby

みんなの回答 5 件

自作関数の引数をリファレンス渡しにすれば$barに値がセットされていない場合でもうまくいきます。

PHP: リファレンス渡し - Manual

http://php.net/manual/ja/language.references.pass.php

function ($bar=0){return $bar;}
ではだめですか?

$foo = isset($bar) ?: 0;
php 5.3から三項演算子のまんなかの部分を省略できますよ

2012-09-23

これって、isset( $bar ) == true のとき、 $foo には何が入るんですか? null じゃないんですか?

2012-09-23

うちのバージョンが5.3.10なんだけど、$bar="test";$foo = isset($bar) ? $bar : 0;の時、$fooには「test」って文字列が入って、$foo = isset($bar) ?: 0; だと1が入るんだけど、これは省略できると言っていいんかな?結果が違うんだけど。

2012-09-24

マニュアルには、---PHP 5.3 以降では、三項演算子のまんなかの部分をなくすこともできるようになりました。 式 expr1 ?: expr3 の結果は、expr1 が TRUE と同等の場合は expr1、 それ以外の場合は expr3 となります。---って書いてますね。php.net/manual/ja/language.operators.comparison.php

2012-09-24

正確には $foo = $bar ?: 0 でした。すまそ

あなたが気持ち悪いかどうかは正直関係ないです。メンテナンス、保守を考えた場合、より理解しやすい記述を取るべきです。自分の書いたコードですら数ヶ月経てば他人のコードと同義です。

JavaScript なら $foo = $bar || 0 ってできるのにねー

回答の受付は終了しました。

関連トピック