[PHP-users 29897] Re: キャラクタ演算について
KOYAMA Tetsuji
koyama @ hoge.org
2006年 7月 27日 (木) 15:22:06 JST
小山です。
On 7/27/06, hosokawa <qzt05475 @ nifty.com> wrote:
> 早速の回答ありがとうございます。
> $var++; では、配列を持つ必要は、なく
> $var--; では、配列で対応するということですね。
> 可能だとは、思いますがどうも釈然としないのですが。
> アスキーコード表を配列として持つことになりますので冗長かと
> 考えております。
> PHPのバグではないかと考えたりしています。
これでバグになってしまうのでは PHP がかわいそうです。
$var = 'B';
とした場合、$var が保持するのは 'B' という文字(列) であり、
B の文字コードではありません。内部的にはもちろん文字コード
に変換した形で持っていますが、それは PHP の文法とは関係
ない話です。
$var--;
した場合、文字列をデクリメントするという意味不明な動作を
要求していることになります。 $var++ が動くのは、規定外だけどたまたま
そうなっているだけのように思います。
B の文字コードの一つ前の文字が欲しいのであれば、
$code = ord($var);
--$code;
$var = chr($code);
のように、明示的に文字コードに変換してから行うべきでしょう。
--
小山哲志@ビート・クラフト
koyama @ beatcraft.com
koyama @ hoge.org
PHP-users メーリングリストの案内