Как найти сумму всех цифр в числе в PHP?
Получить сумму цифр в PHP
Ответы (11)
array_sum(str_split($number));
Это предполагает, что число положительное (или, точнее, преобразование $number
в строку генерирует только цифры).
Метод Artefactos явно непобедим, но вот вариант того, как можно было бы сделать это "вручную":
$number = 1234567890;
$sum = 0;
do {
$sum += $number % 10;
}
while ($number = (int) $number / 10);
На самом деле это быстрее, чем метод Artefactos (по крайней мере, для 1234567890
), потому что экономит два вызова функций.
Другой способ, не такой быстрый, не простой в одну строку
<?php
$n = 123;
$nstr = $n . "";
$sum = 0;
for ($i = 0; $i < strlen($nstr); ++$i)
{
$sum += $nstr[$i];
}
echo $sum;
?>
Это также предполагает, что число положительное.
<?php
// PHP program to calculate the sum of digits
function sum($num) {
$sum = 0;
for ($i = 0; $i < strlen($num); $i++){
$sum += $num[$i];
}
return $sum;
}
// Driver Code
$num = "925";
echo sum($num);
?>
Результат будет 9+2+5 = 16
Попробуйте следующий код:
<?php
$num = 525;
$sum = 0;
while ($num > 0)
{
$sum= $sum + ($num % 10);
$num= $num / 10;
}
echo "Summation=" . $sum;
?>
0
. Попробуйте while ($num|0)
. И кстати: for(;$num|0;$num/=10)$sum+=$num%10;
- person Titus; 04.05.2018
Если вас интересует регулярное выражение:
array_sum(preg_split("//", $number));
Предположим, вы хотите найти сумму цифр числа, скажем, 2395. Самым простым решением было бы сначала разделить цифры и найти сумму, а затем объединить все числа в одно число.
<?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";
?>
function addDigits($num) { if ($num % 9 == 0 && $num > 0) { return 9; } else { return $num % 9; } }
только О(n)
в LeetCode отправить результат: Время выполнения: 4 мс, быстрее, чем 92,86% онлайн-заявок PHP для Add Digits. Использование памяти: 14,3 МБ, менее 100,00% онлайн-заявок PHP на Add Digits.
Один из способов получить сумму цифр, однако это самый медленный маршрут.
$n=123;
while(($n=$n-9)>9);
echo "n: $n";
Вот код. Пожалуйста, попробуйте это
<?php
$d=0;
$num=12345;
$temp=$num;
$sum=0;
while($temp>1)
{
$temp=$temp/10;
$d++;
}
echo "Digits Are : $d </br>";
for (;$num>1;)
{
$d=$num%10;
$num=$num/10;
$sum=$sum+$d;
}
echo "Sum of Digits is : $sum";
?>