我无法理解foreach循环在此代码中的工作原理。我的理解是$ Score被分配了$ Die1 + $ Die2的数组,但$ Score如何获得1,2,3,4,5,6,5,4,3,2,1的值?不应该是序列中的1,2,3,4,5,6,1,2,3,4,5,6,因为这些值是如何在$ FaceValues数组中列出的?我所遗漏的foreach陈述中是否有某些事情发生?任何人都可以详细说明这里的双重语句吗?
$FaceValues = array(1, 2, 3, 4, 5, 6);
$ScoreCount = array();
for($PossibleRolls = 2; $PossibleRolls <= 12; ++$PossibleRolls){
$ScoreCount[$PossibleRolls] = 0;
}
foreach ($FaceValues as $Die1) {
foreach ($FaceValues as $Die2) {
// all possible combinations
++$RollCount;
// increment RollCount
$Score = $Die1 + $Die2;
// 1,2,3,4,5,6
// 6,5,4,3,2,1
++$ScoreCount[$Score];
}
}
foreach ($ScoreCount as $ScoreValue => $ScoreTimes){
echo "<p> A combined value of $ScoreValue occured $ScoreTimes of $RollCount times. </p>";
}
答案 0 :(得分:0)
在第一次迭代中,$ Die1为1,$ Die2为2.因此它从2开始并上升到7.然后内循环结束,外循环继续将$ Die1设置为2.你应该看到数字3到8。
您可以使用echo
或var_dump()
和exit()
在每一步打印值,如果您在跟踪时遇到问题则停止。