Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取PHP中的数字总和_Php_String_Sum - Fatal编程技术网

获取PHP中的数字总和

获取PHP中的数字总和,php,string,sum,Php,String,Sum,如何在PHP中找到数字中所有数字的总和 array_sum(str_split($number)); 这假设数字为正数(或者更准确地说,将$number转换为字符串只生成数字)。另一种方式,不是那么快,也不是单行简单 <?php $n = 123; $nstr = $n . ""; $sum = 0; for ($i = 0; $i < strlen($nstr); ++$i) { $sum += $nstr[$i];

如何在PHP中找到数字中所有数字的总和

array_sum(str_split($number));

这假设数字为正数(或者更准确地说,将
$number
转换为字符串只生成数字)。

另一种方式,不是那么快,也不是单行简单

<?php

    $n = 123;
    $nstr = $n . "";

    $sum = 0;
    for ($i = 0; $i < strlen($nstr); ++$i)
    {
        $sum += $nstr[$i];
    }
    echo $sum;

?>


它还假设这个数字是正的。

Artefacts方法显然是无与伦比的,但这里有一个如何“手动”实现的版本:

这实际上比Artefacts方法快(至少对于
1234567890
),因为它节省了两个函数调用。


<html>
<head>
<title>detail</title>
</head>
<body>
<?php
$n = 123;
$sum=0; $n1=0;

  for ($i =0; $i<=strlen($n);$i++)
 {

  $n1=$n%10;

   $sum += $n1;
   $n=$n/10;
  }
 echo $sum;

 ?>
 </body>
</html>
细节
这是代码。。请试试这个

   <?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";

   ?>

请尝试以下代码:

<?php

$num = 525;
$sum = 0;

while ($num > 0)
{
    $sum= $sum + ($num % 10);
    $num= $num / 10;
}
echo "Summation=" . $sum;

?>

如果对正则表达式感兴趣:

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";
     ?>


-----------------输出-------------
----使用php的数字和----
数字98765的和是35

获取数字总和的一种方法,但这是一种最慢的方法

$n=123;
while(($n=$n-9)>9);
echo "n: $n";
函数addDigits($num){ 如果($num%9==0&&$num>0){ 返回9; }否则{ 返回$num%9; } } 只有O(n)

在LeetCode提交结果: 运行时间:4毫秒,比添加数字的PHP在线提交速度快92.86%。 内存使用:14.3MB,不到PHP在线提交的添加数字的100.00%。


<?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

谢谢,这简直太简单了!非常感谢。越简单越好!如果不知道一个数字是正还是负,可以使用abs()函数使其始终为正数组_和(str_split(abs($number));有趣的是,它在这里获得了70多张选票,在php手册页面上以-40的票数被否决。它不仅比任何循环都短,而且速度更快:php没有整数除法,所以循环解决方案必须在每次迭代中将剩余的数从float转换为int。@Frank Farmer不会在每次迭代中计算字符串长度:PTrue,但这可能仍然比通过str_split构建一个完整的阵列要好。如果$number=“123456789001234567890”@ShaifulIslam怎么办?无限循环:$num将成为非
0
的第一个数字后的引号。在($num | 0)时尝试
。顺便说一句:
对于(;$num | 0;$num/=10)$sum+=$num%10最多7个浮点数字您好!虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
// 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;
$n=123;
while(($n=$n-9)>9);
echo "n: $n";
function addDigits($num) { if ($num % 9 == 0 && $num > 0) { return 9; } else { return $num % 9; } }
<?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); 
?>