获取PHP中的数字总和
如何在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];
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);
?>