我写了一个简单的PHP脚本,应该打印320个随机生成的年龄。这些年龄应成对生成,并应计算年龄之间的差异。我写了下面的代码,除了getDifference函数之外的所有东西都可以。如果我退出该功能,将生成320岁。
但如果我把功能留在其中:
1)不能正常工作
2)长循环驻留
3)有时打印出来 4岁而不是320岁。
我需要一些帮助。
<?php
//Minimum of the age range.
$min = 8;
//Maxium of the age range.
$max = 25;
//Generating the ages
for ($i=0;$i<160;$i++) {
$age1= random_float($min,$max);
$firstage= round($age1,1);
$age2= random_float($min,$max);
$secondage=round($age2,1);
$diff = getDifference ($age1, $age2);
print "Age 1: $firstage Age 2: $secondage Difference: $diff \n ";
}
//Function to generate a random float number
function random_float ($min,$max) {
return ($min+lcg_value()*(abs($max-$min)));
}
// Function to calculate the differences between the ages in years and months
function getDifference ($age1, $age2) {
$difference = abs($age2 - $age1);
$jaar = 0;
$newdifference = round($difference,1) * 12;
for ($newdifference; $newdifference >=12; $newdifference -12) {
$jaar ++; }
$month = $newdifference - 12*$jaar;
$newmonth = floor($month);
$test = "$jaar years and $newmonth months";
return $test;
}
?>
答案 0 :(得分:2)
在这个循环中:
for ($newdifference; $newdifference >=12; $newdifference -12) {
$jaar ++;
}
两件事:
首先,您不需要第一个循环条件语句。该变量已经存在,无需声明:
for (; $newdifference >=12; $newdifference -12) {
$jaar ++;
}
其次,您永远不会在循环中修改$newdifference
。基本上,第三个循环条件语句($newdifference -12
)实际上并没有做任何事情。它减去12,但对减法的结果没有做任何事情。因此,如果循环开始(因为条件为true
),那么永远不会结束(因为条件将始终为true
)。也许你打算修改最后一个循环条件语句中的值?:
for (; $newdifference >=12; $newdifference -= 12) {
$jaar ++;
}
答案 1 :(得分:1)
因为你没有在你的for循环中增加你的$i
,所以它陷入了循环:
替换:
for ($newdifference; $newdifference >=12; $newdifference -12)
人:
for ($newdifference; $newdifference >=12; $newdifference -= 12)
您需要使用-=
代替-
,否则它不会更新$newdifference
的值,它只会返回结果方程。
答案 2 :(得分:1)
你根本没有改变$ newdifference。你的for循环应该是
for($newdifference; $newdifference >= 12; $newdifference -= 12) {
这会使$newdifference
减少12。