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。
以上