我正在尝试这个循环,但我在 $m[2][3]
中遇到了问题。未显示任何值。所以我对增量有一些问题。
$nArr = array('A', 'B', 'C', 'D', 'E', 'F');
$lp = 4;
for ($i = 0; $i < $lp; $i++) {
$m[$i][$i] = 1;
for ($x = $i; $x < $lp; $x++) {
$v = $i+$i;
$m[$i][$x+1] = $nArr[$x+$v];
}
}
这是我的输出:
1 + A + B + C + - 1 + D + E + - 1 + + - 1 +
我想要的输出:
1 + A + B + C + - 1 + D + E + - 1 + F + - 1 +
详细说明:
echo $m[0][0]."+"; 1
echo $m[0][1]."+"; A
echo $m[0][2]."+"; B
echo $m[0][3]."+"; C
echo " - ";
echo $m[1][1]."+"; 1
echo $m[1][2]."+"; D
echo $m[1][3]."+"; E
echo "- ";
echo $m[2][2]."+";1
echo $m[2][3]."+"; //error, must be F
echo "- ";
echo $m[3][3]."+"; 1
最佳答案
您的问题在于您的进度。在第二个“for”中,您的进步迅速增加:
$v = $i+$i;
$m[$i][$x+1] = $nArr[$x+$v];
- 在第一次迭代中以 0 + 0 + 0 ($x + $ i + $ i) = 0 = “一个”
- 在第二次迭代中以 1 + 1 + 1 ($x + $ i + $ i) = 3 = “D”
- 第三次迭代以 2 + 2 + 2 ($x + $ i + $ i) = 6 = null,您的数组有 6 个元素,因此您的最大索引为 5。
您应该更改级数以获得索引的下一个级数:0、3、5。
试试这个:
$nArr = array('A', 'B', 'C', 'D', 'E', 'F');
$lp = 4;
for ($i = 0; $i < $lp; $i++) {
$m[$i][$i] = 1;
for ($x = $i; $x < $lp; $x++) {
$v = $i+ceil($i/2);
$m[$i][$x+1] = $nArr[$x+$v];
}
}
关于php - 循环中的错误数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7923763/