Php 我想对一个数字中的所有数字求和
我想把一个数字中的所有数字相加,如果它是11,22,那么我只想显示11或22,否则我想把它变成一个数字。 例30=3+0=3 28=2+8=10=1+0=1 我刚做了一个代码,但有个错误 请帮忙Php 我想对一个数字中的所有数字求和,php,numbers,add,digit,Php,Numbers,Add,Digit,我想把一个数字中的所有数字相加,如果它是11,22,那么我只想显示11或22,否则我想把它变成一个数字。 例30=3+0=3 28=2+8=10=1+0=1 我刚做了一个代码,但有个错误 请帮忙 <?php $day = 17; $month = 8; $year = 1993; function sumday($day) { if ($day == 11) { $sday = 11; }
<?php
$day = 17;
$month = 8;
$year = 1993;
function sumday($day)
{
if ($day == 11)
{
$sday = 11;
}
elseif ($day == 22)
{
$sday = 22;
}
elseif ($day == 29)
{
$sday = 11;
}
else
{
do {
$nday = $day . "";
$sday = 0;
for ($i = 0; $i < strlen($nday); ++$i)
{
$sday += $nday[$i];
}
while ($sday <=9);
}
return $sday;
}
试试这个:
else {
$nday = $day . ""; //moved out wrom loop
do {
$sday = 0;
for ($i = 0; $i < strlen($nday); ++$i)
{
$sday += $nday[$i];
}
$nday = $sday . ""; // you forget this line
while ($sday <=9);
}
首先,我建议您学会将函数所执行的任务分开 如果要对数字的位数求和,可以先创建一个名为sum_digits的函数 然后,你可以做任何你需要做的事情 请参考Unninked的答案,这是个好答案。 这是完整的代码,再加上Unninked的答案
<?php
$day = 17;
$month = 8;
$year = 1993;
function sumday($day)
{
if ($day == 11)
{
$sday = 11;
}
elseif ($day == 22)
{
$sday = 22;
}
elseif ($day == 29)
{
$sday = 11;
}
else{
$sday = $day;
do {
$sday = $sday % 10 + floor($sday/10);
} while ($sday >= 10);
}
return $sday;
}
?>
编辑:这是一个逻辑,可以分割一天,并将其相加
function sumday($day)
{
$sday = $day;
$arrday = str_split($sday); // split the day into array
$sumarrday = 0;
for($i = 0; $i < strlen((string)$sday); $i++){
$sumarrday = $sumarrday + $arrday[$i]; // sum the day from the array
}
$sday = $sumarrday;
// here you can modify the condition of while statement for your needs
// for example, if you want to return 29 when 29 shows up, add this to your condition, && $sday != 29
while ($sday >= 10){
$sday = $sday % 10 + floor($sday/10);
}
return $sday;
}
你的问题不清楚,以下是我对你文章的理解。考试不是在倒退吗?当结果大于9时,您希望继续重复,是吗?在重复之前,您需要将$nday设置为$sday。感谢您的帮助。我刚开始学习php。如果在do-while循环中是11,22或33,是否可以返回总和?感谢您的帮助如果在do-while循环中是11,22或33,是否可以返回总和?先生,如果我的$day==994,那么我也想退出循环并显示像8885>8+8+5=29>2+9=11;我想表达一下11嗨,我以为$day只包含2位数字,因为它是day。哈哈。在这种情况下,您需要添加不同的逻辑。稍后我将帮助您,因为我现在仍在工作:.u r rit,但我还想用相同的函数求年和。如果你有时间,请帮助我。谢谢你的快速帮助啊,我明白了,好的,我会在下班后帮你:
function sumday($day)
{
$sday = $day;
while ($sday >= 10 && $sday != 11 && $sday != 22 && $sday != 29){
$sday = $sday % 10 + floor($sday/10);
}
return $sday;
}
function sumday($day)
{
$sday = $day;
$arrday = str_split($sday); // split the day into array
$sumarrday = 0;
for($i = 0; $i < strlen((string)$sday); $i++){
$sumarrday = $sumarrday + $arrday[$i]; // sum the day from the array
}
$sday = $sumarrday;
// here you can modify the condition of while statement for your needs
// for example, if you want to return 29 when 29 shows up, add this to your condition, && $sday != 29
while ($sday >= 10){
$sday = $sday % 10 + floor($sday/10);
}
return $sday;
}