phpの三項演算子を書いてていつも思っていた事を書きます。

php三項演算子を書いてていつも思っていた事を書きます。

私は結構三項演算子を多用してしまうのですが、下記のようなケースの時とても面倒臭いと感じてしまいます。

<?php
(($a) ? $a : $b);

//もしくは
((strlen($a)) ? $a : $b);
?>

いつも、「きっともっと良い書き方があるんだろうな」と思っていましたが、調べたりはしていませんでした。

早速調査

php 三項演算子 - Google 検索

マニュアル内にて

PHP 5.3 以降では、三項演算子のまんなかの部分をなくすこともできるようになりました。 式 expr1 ?: expr3 の結果は、expr1 が TRUE と同等の場合は expr1、 それ以外の場合は expr3 となります。 

php 5.3 以降からですか〜。
ロリポップ!レンタルサーバー | 利用実績170万人突破!無料SSLあり
ナウでヤングでもphp 5.2.6ですよ。

つまりphp 5.3 以降からは

<?php
(($a) ?: $b);

//もしくは
((strlen($a)) ?: $b);
?>

といった書き方が出来るという事ですね。

更に調査

http://cocoasaurus.com/blog/2009/04/tips-if.html
論理和演算子でいけるんでないかと考えました。

<?php
$hoge = "hoge";
echo $hoge || $foo;
//hogeが出力されると思いましたが、1が出力されました。
?>

<?php
$hoge = "hoge";
$foo  = "foo";
echo $hoge || $foo;
//1が出力される。
?>

むむむ…。

まとめ

php 5.3 以降にならないと出来ない…。
という結果でした。

誰か良い方法教えて下さい。



[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/