前書き
@38kun さんの 「JavaScript の a || b || c と PHP の $a || $b || $c は動作が異なる」 より、これをもしPHPで実現するんだったらどう書くかなーと。ただ、可能であればこうするよりも 「PHPに演算子オーバーロードを実装する」 のようにC言語レベルで演算子自体を書き換えてしまったほうが便利かもしれません。これはあくまで簡単に実装したい人のための関数です。
実装例
命名はVisualBasicより。
function orelse() {
foreach (func_get_args() as $value) {
if ($value) {
return $value;
}
}
return null;
}
function andalso() {
foreach (func_get_args() as $value) {
if (!$value) {
return $value;
}
}
return isset($value) ? $value : null;
}
至って変わったところはないですねw
使い方
var_dump(orelse(0, 10, 20));
// 出力結果:int(10)
var_dump(orelse(false, '', null);
// 出力結果:null
var_dump(andalso('あ', '', 'う');
// 出力結果:string(0) ""