• ホーム
  • PHP
  • 文字列(数字)を1桁づつ分割して、1桁の整数になるまで合算を繰り返すPHPコード

文字列(数字)を1桁づつ分割して、1桁の整数になるまで合算を繰り返すPHPコード

文字列(数字)を1桁づつ分割して、1桁の整数になるまで合算を繰り返すPHPコード

占いのブログパーツを作りたいと思い、入力値(数字)によって特定の結果を表示したい場面がありました。「おみくじ」でありませんので、その都度結果が変わるランダムに表示させるものではありません。あくまでも、入力値によって決まった結果を表示させるというものです。

function sumDigits($num) {
    // 数字を1桁ずつ分割
    $digits = str_split($num);
    
    // 各桁の値を合算
    $sum = array_sum($digits);

    // 合算結果が1桁になるまで繰り返す
    while ($sum > 9) {
        $digits = str_split($sum);
        $sum = array_sum($digits);
    }

    return $sum;
}

// 使用例
$num = 12345;
$result = sumDigits($num);
echo '結果:' .$result; // 6
コード解説
上記のコードでは「sumDigits関数」を定義しています。この関数は、引数として渡された数字を1桁ずつ分割して、各桁の値を合算します。その後、合算結果が1桁になるまで繰り返します。最終的に1桁になった数字を返します。

使用例では、変数 $num に「12345」という数字を設定しています。sumDigits関数にこの数字を渡し、結果を $result に代入しています。

最後に、$result を表示することで、最終結果である6(1+2+3+4+5=15 → 1+5=6)が表示されます。

変数 $num には、数字(整数)を指定していますが、数字(整数)意外の文字列の場合は、$num に入った値を、sumDigits関数の冒頭で、数字(整数)に変換してやればOKです。

別途、結果データの変数リスト(1~9の9つのパターン)を用意しておいて、最終結果の数値に該当するデータを表示させれば、なんちゃって占いの完成です。

PHP
2023.02.18 09:55
2023.02.18 10:00

Related entry

Pickup entry