phpで、数字の各桁を足す方法はあるのでしょうか?


例えば、

192837465

の全ての桁を足して、

1+9+2+8+3+7+4+6+5

とし、「45」と答えを出す方法です。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/10/25 17:40:10
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント56pt

こんな感じでどうでしょうか?

<?php
preg_match_all("([0-9])", "123456789", $m);
echo array_sum($m[0]);
?>'
id:onigirin

どうもありがとうございます!

無事目的が達成されました!!

2007/10/25 17:38:44

その他の回答1件)

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226ここでベストアンサー

ポイント56pt

こんな感じでどうでしょうか?

<?php
preg_match_all("([0-9])", "123456789", $m);
echo array_sum($m[0]);
?>'
id:onigirin

どうもありがとうございます!

無事目的が達成されました!!

2007/10/25 17:38:44
id:nikuzure No.2

回答回数89ベストアンサー獲得回数0

ポイント14pt

一文字ずつ区切る、というそのものの関数は無いので、以下のようでは駄目でしょうか?

$str = "123456789";

preg_match_all("/./",$str,$result);

一文字ずつの配列が $result に入ります。

正規表現で「なんらかの文字列が1文字該当した場合、$result に格納する」形となっています。

もしくは

$str = "123456789";

$num = 0;

$count = strlen($str);

for($i=0;$i<=$count;$i++){

$num = $num + substr($str,$i,1);

}

などです。

文字列の長さを取得し、一文字ずつ切り取って足しています。


ずばりそのものの関数をご希望でしたらポイントは結構です。

id:onigirin

どうもありがとうございます!

アルゴリズムが参考になりました!

2007/10/25 17:39:18
  • id:tezcello
    数値を文字列に変換し、
    一文字ずつ取り出し、
    数値として足していく

    の手順でOKかと。
    ソースが必要ですか?
  • id:ootatmt
    一文字ずつに分解する方法が分からないのかな?
  • id:onigirin
    どうもありがとうございます。

    1文字ずつ分解する関数が見つからなくて・・・。
    参考ソースが載っているサイト等があると助かります。
  • id:y-kawaz
    1の回答者ですが、preg_match_all の最初の引数は "/[0-9]/" ですね。
    試したらこれでも動いてしまったのでそのまま張ったんですが、失礼しました(^^;
  • id:Kumappus
    PHP5ならまさに1文字ずつ分割してarrayに返すstr_split関数があります。

    <?php
    $m = str_split("123456789");
    echo array_sum($m);
    ?>

    結果=45

    http://www.phpoo.net/index.php?p=function.str_split.html
  • id:onigirin
    ■y-kawazさん

    どうもありがとうございます。
    動いたので気にしていませんでしたが、修正しておきますね。


    ■Kumappusさん

    php5関数いいですね!
    ちょっと使ってみますね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません