[PHP-users 12721] 3項演算子について

Mashiki php-users@php.gr.jp
Wed, 22 Jan 2003 10:56:12 +0900


Mashikiです。

phpの3項演算子について昔から疑問に感じていることが
あります。以下のスクリプトについて


<?php
  $a = $_GET['a'];
  echo "<pre>\n";

  /* 式1 */
  $msg = $a=='a'?'ええええ':
         $a=='b'?'びいびいびい':
         $a=='c'?'し〜〜〜〜〜':
                 'どれでもない'
  ;
  echo "式1: $msg\n";

  /* 式2 */
  $msg = ($a=='a'?'ええええ':
         ($a=='b'?'びいびいびい':
         ($a=='c'?'し〜〜〜〜〜':
                  'どれでもない'
  )));
  echo "式2: $msg\n";
?>


パラメータに a=a を指定すると
式1: し〜〜〜〜〜
式2: ええええ

パラメータに a=b を指定すると
式1: し〜〜〜〜〜
式2: びいびいびい

パラメータに a=c を指定すると
式1: し〜〜〜〜〜
式2: し〜〜〜〜〜

パラメータに a=x を指定すると
式1: どれでもない
式2: どれでもない


式2は意図どおりに動きます。式1の結果は「?」です。
Cやjavaだと式1のように書いても、式2の結果のように
なると思いますが、phpのこの振る舞いはどのように解釈
したらよいでしょうか?