我遇到了一些PHP问题。
我使用而总结一个数字的数字总是它有两个以上的数字,一些如何,它进入一个无限循环。 例如:56 = 5 + 6 = 11 = 1 + 1 = 2.
以下是代码:
$somaP = 0;
$numPer = (string)$numPer; //$numPer = number calculated previously
while (strlen($numPer) > 1){
for ($j = 0; $j < strlen($numPer); $j++){
$somaP = $somaP + (int)($numPer[$j]);
}
$numPer = (string) $somaP;
}
任何人都可以帮助我吗?猜猜这是一个简单的错误,但我无法解决它。
答案 0 :(得分:0)
看看这一行:
$numPer = (string) $somaP;
似乎$ somaP的长度永远不会小于(或等于)1.所以$ numPer的长度永远不会小于(或等于)。
答案 1 :(得分:0)
您需要在while循环中重置$ somaP的值。
目前,每次循环都会继续增加其值。
试试这个:
$numPer = (string)$numPer; //$numPer = number calculated previously
while (strlen($numPer) > 1){
$somaP = 0;
for ($j = 0; $j < strlen($numPer); $j++){
$somaP = $somaP + (int)($numPer[$j]);
}
$numPer = (string) $somaP;
}
答案 2 :(得分:0)
你想做什么? 我不清楚。
例如,这会将字符串中的每个数字加在一起吗?
例如“1234”= 1 + 2 + 3 + 4 = 10
$total = 0;
for($i = 0; i < strlen($string); $i++){
$total += $string[$i];
}
echo $total;
答案 3 :(得分:0)
我会说这看起来更干净:
$numPer = 56;
while ($numPer > 9){
$numPer = array_sum(str_split($numPer));
}
echo $numPer;
PHP处理所有字符串&lt;&gt;为您编号转换,因此除非确实需要,否则无需对数字执行(字符串)。