2

重写下面的代码,使其只包含一个循环,并且只使用一个迭代变量。

$result = Array();
for ($x = 0; $x < 6; $x++){
    for ($y = 0; $y < 6; $y++){
        for ($z = 0; $z < 6; $z++){
            $result[$x][$y][$z] = $x * $y * $z;
        }
    }
}

没有答案,请指点我在正确的方向。有没有可以处理这个的php类?或者它只是一种简单的解决问题的技巧?或者这是一个技巧问题?

推荐结果如下:

$result = Array();
for ($i = 0; $i < 216; $i++){
    $x = $i % 6;
    $y = floor($i/6) % 6;
    $z = floor($i/36);
    $result[$x][$y][$z] = $x * $y * $z;
}
4

2 回答 2

8

缺少作业旗?

以 6 为基数进行思考,然后从零运行一个循环到 6^3 (216),然后使用 mod 减少/移回x y z位置。

于 2013-05-28T18:29:49.240 回答
1

专业提示 #1:您可以在单个 for 循环中进行多个变量操作...

for($a = 0, $b = 10; $b > $a; $b++, $a--) {
    echo $a . $b;
}
于 2013-05-28T18:30:04.643 回答