这个foreach循环代码如何在php中运行?

时间:2018-01-20 02:49:09

标签: php

我无法理解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>";
                    }

1 个答案:

答案 0 :(得分:0)

在第一次迭代中,$ Die1为1,$ Die2为2.因此它从2开始并上升到7.然后内循环结束,外循环继续将$ Die1设置为2.你应该看到数字3到8。

您可以使用echovar_dump()exit()在每一步打印值,如果您在跟踪时遇到问题则停止。