LoginSignup
3
1

More than 3 years have passed since last update.

PHP では三項演算子をネストさせないようにした方が良い

Posted at

TL;DR

既出ネタ。PHP では三項演算子をネストさせないようにした方が良い。

Ruby

$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
rb
a = true
b = true

puts a ? 'あ' : b ? 'い' : 'う' #=> あ

Perl

$ perl -E'say$^V'
v5.18.4
pl
local $\ = "\n";

my $a = 1;
my $b = 1;

print $a ? '' : $b ? '' : ''; #=> あ

Node.js

$ node -v
v12.4.0
js
let a = true;
let b = true;

console.log( a ? '' : b ? '' : '' ); //=> あ

Swift

$ swift --version
Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5)
Target: x86_64-apple-darwin18.6.0
swift
let a = true
let b = true

print( a ? "あ" : b ? "い" : "う" ) //=> あ

PHP

$ php -v
PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

比較演算子

三項演算子を "積み重ねて" 使用することは避けましょう。 ひとつの文の中で複数の三項演算子を使用した際の PHP の振る舞いは、 少々わかりにくいものです。

php
<?php
$a = true;
$b = true;

# ……🤔?
echo $a ? 'あ' : $b ? 'い' : 'う'; #=> い
echo PHP_EOL;


# 正しい(?)書き方
echo $a ? 'あ' : ( $b ? 'い' : 'う' ); #=> あ
echo PHP_EOL;

おわり

おわりです

参考と注釈

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1