PHPで文字列をintにグレードアップする

PHPでは文字列もインクリメントすることができます。すごいです。


$a = "aaa";
echo ++$a;

結果:


aab

となります。もちろん繰り上がりも大文字小文字も考慮してくれます。


$a = "aaz";
echo ++$a;
echo "\n";
$aA = "AzZ";
echo  ++$aA;

結果:


aba
BaA

ただしひらがなは無理っぽい?カタカナはOKっぽい?感じはダメっぽい?って感じでこの辺はさすがに微妙です。

これとはちょっと違う話で、PHPは数値っぽい文字列を数値に変換して比較するという機能があります。
下記サイトに書いてある話です。
http://d.hatena.ne.jp/fbis/20090618/1245297557


if ("0x0A" == 10) {
   echo "true";
}

結果:


true

これは実は比較演算じゃなくても数値に変換されます。足し算とか、そうインクリメント演算子でも!
ということで、上記の文字列インクリメントと組み合わせると・・・


$a = "0w7";
for ($i = 0; $i < 5; $i++) {
   $a++;
   echo $a;
   echo "\n";
   echo var_dump($a);
}

結果:


0w8
string(3) "0w8"
0w9
string(3) "0w9"
0x0
string(3) "0x0"
1
int(1)
2
int(2)

途中で型がintに変化するという摩訶不思議。・・・はっちゃけすぎだろPHP。

以上

コスミー について

昔(?)はゲーム作ってました。 今もなんか作ろうとしています。
カテゴリー: PHP パーマリンク

コメントを残す

メールアドレスが公開されることはありません。