PHPで数値のすべての数字の合計を見つけるにはどうすればよいですか?
array_sum(str_split($number));
これは、数値が正であることを前提としています(より正確には、$number
を文字列に変換すると、数字しか生成されません)。
Artefactosメソッドは明らかに無敵ですが、ここでは「手動」で実行できるバージョンを示します。
$number = 1234567890;
$sum = 0;
do {
$sum += $number % 10;
}
while ($number = (int) $number / 10);
これは実際にはArtefactosメソッドよりも高速です(少なくとも1234567890
)、2つの関数呼び出しを保存するため。
別の方法、それほど速くなく、単一ラインではない単純な
<?php
$n = 123;
$nstr = $n . "";
$sum = 0;
for ($i = 0; $i < strlen($nstr); ++$i)
{
$sum += $nstr[$i];
}
echo $sum;
?>
また、数値が正であると想定しています。
正規表現に興味がある場合:
array_sum(preg_split("//", $number));
function addDigits($ num){ if($ num%9 == 0 && $ num> 0){ return 9; } else { return $ num%9; } }
o(n)のみ
leetCodeでの送信結果:実行時間:4ミリ秒、Add DigitsのPHPオンライン送信の92.86%より高速。メモリ使用量:14.3 MB、Add DigitsのPHPオンライン送信の100.00%未満。
<?php
echo"----Sum of digit using php----";
echo"<br/ >";
$num=98765;
$sum=0;
$rem=0;
for($i=0;$i<=$num;$i++)
{
$rem=$num%10;
$sum=$sum+$rem;
$num=$num/10;
}
echo "The sum of digit 98765 is ".$sum;
?>
-----------------Output-------------
----Sum of digit using php----
The sum of digit 98765 is 35
次のコードを試してください:
<?php
$num = 525;
$sum = 0;
while ($num > 0)
{
$sum= $sum + ($num % 10);
$num= $num / 10;
}
echo "Summation=" . $sum;
?>
// math before code
// base of digit sums is 9
// the product of all numbers multiplied by 9 equals 9 as digit sum
$nr = 58821.5712; // any number
// Initiallization
$d = array();
$d = explode(".",$nr); // cut decimal digits
$fl = strlen($d[1]); // count decimal digits
$pow = pow(10 ,$fl); // power up for integer
$nr = $nr * $pow; // make float become integer
// The Code
$ds = $nr % 9; // modulo of 9
if($ds == 0) $ds=9; // cancel out zeros
echo $ds;
数値の数字の合計を求めたいとします。たとえば、2395最も簡単な解決策は、最初に数字を分割し、合計を見つけてから、すべての数字を1つの数値に連結することです。
<?php
$number=2;
$number1=3;
$number2=9;
$number3=5;
$combine=$number.$number1.$number2.$number3;
$sum=$number+$number1+$number2+$number3;
echo "The sum of $combine is $sum";
?>