【php】アルファベットをインクリメントとデクリメントするとどうなるのか
どうも最近スロットで万枚だしたEASYです。
今日はphpでアルファベットのインクリメント・デクリメントをやっていきます。
とりあえず結果
インクリメント
<?php
$alphabet = "A";
for ($i = 0; $i <= 30;$i++) {
$alphabet++;
echo $alphabet." ";
}
?>
結果
B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF
デクリメント
<?php
$alphabet = "Z";
for ($i = 0; $i <= 30;$i++) {
$alphabet--;
echo $alphabet." ";
}
?>
結果
Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z
結果は、
インクリメントするとA、B、C・・・となっていく
デクリメントはZ、Y、X・・・とはならない
こうなる理由はあるのでしょうけど、個人的にはどうでもいい。(´∀`)フハハハ
まぁきっとそういう仕様なんでしょう。
ただそうなると、
Z、Y、X・・・ってしたいときはどうすればいいでしょう。
結局はこんな感じでいけました。
コード
<?php
$result = [];
$current = 'Z';
while (true) {
$result[] = $current; // 現在の文字を結果に追加
// ASCIIコードを使ってデクリメント処理
$ascii = ord($current);
if ($ascii === ord('A')) {
break; // 'A' に達したら終了
}
$current = chr($ascii - 1); // 1文字前に移動
}
$result;
// 結果を表示
echo implode(' ', $result);
?>
結果
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
ASCIIコードを使ってデクリメント処理ができるらしいです。(´・∀・`)ヘー
ちなみに現在はAでbreakしてますが、もっとデクリメントするとASCIIコードのAより前の文字が出てきます。
Aを超えてデクリメントした場合
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
@ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !
ここまでやりましたけどいつ使うんでしょうね。
まぁ誰かの役に立てば幸いです。
それではまたお会いしましょう~(・ω・)ノシ