[PHP-users 16201]Re: case文での比較演算子について
Satoshi Fuke
satoshi @ fromone.jp
2003年 6月 24日 (火) 19:52:18 JST
Fukeです。
Behalf Of HAMAI Kyoichi
Sent: Tuesday, June 24, 2003 5:30 PM
> fukeさんのと同じなのは。
>
> <?php
> $i = $_GET[i];
> if ($i<=20){
> $size = 1;
> }elseif ($i<=100){
> $size = 5;
> }else{
> $size = 10;
> }
> ?>
そうですね。ただ、ifの3分岐はelseを使うと見通しが悪くなるときがありますね。
<?php
$size = 10;
if ($i<=100){ $size=5; }
if ($i<=20) { $size = 1; }
?>
この方法はもっとわからなくなりそう(^ ^;
本題からそれますが、型がの扱いがどうなってるか
ちょっと気になりましたので、以下のソースで確認しました。
<?php
$i = $_GET[i];
$str = true; //$str = 1; $str="1"; と入れ替え
switch($str){
case ($i<=20):
$size = 1;
break;
case ($i<=100):
$size = 5;
break;
default:
$size = 10;
}
echo "その1:サイズは $size です<br>";
$size = 10;
if ($str===($i<=100)){ $size = 5;}
if ($str===($i<=20)){ $size = 1;}
echo "その2:サイズは $size です<br>";
?>
結果:
$str=trueのとき:どちらも正常動作
$str=1のとき:caseの動作は$str=trueと同じ。if文は引っかからず。
$str="1"のとき:caseの動作は$str=trueと同じ。if文は引っかからず。
ifの方は型チェックしてるので当たり前として、
caseの動作は if ($str==($i<=100)) と等価な動きをしますね。
話がそれちゃいましたが、今回のケースの場合(目盛り間隔の算出)、
私は計算式作ると思います。
-----
冨家 聡(Satoshi Fuke)
E-mail: satoshi @ fromone.jp
FROM ONE Co.
PHP-users メーリングリストの案内