Другой способ, не такой быстрый, не однострочный
<?php
$n = 123;
$nstr = $n . "";
$sum = 0;
for ($i = 0; $i < strlen($nstr); ++$i)
{
$sum += $nstr[$i];
}
echo $sum;
?>
Он также предполагает, что число положительное.
Метод Artefactos очевидно непревзойденный, но вот версия, как это можно было сделать "вручную":
$number = 1234567890;
$sum = 0;
do {
$sum += $number % 10;
}
while ($number = (int) $number / 10);
Это на самом деле быстрее, чем метод Artefactos (по крайней мере, для 1234567890
), потому что он сохраняет два вызова функций.
array_sum(str_split($number));
Предполагается, что число положительное (или, точнее, преобразование $ number
в строку генерирует только цифры).