php - 循环中的错误数组值

标签 php arrays loops

我正在尝试这个循环,但我在 $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/

相关文章:

php - 如何在其他 zip 文件中搜索 zip 文件中的字符串(如果有)

php - php 中的登录表单

c++ - 如何在使用此数组初始化对象时知道数组的大小?

C getchar 循环获取用户的整数输入 - [如何改进]

php - 循环SQL结果,只输出设置的field_value

php - 将某些表列导入到数据库表中

php - 使用 PHP 和 MySQL 的二叉树从注册成员中创建 5 个子代和 25 个孙代

javascript 多维数组使用拆分为新数组

c++ - ArrayList C++问题

javascript - 在进入下一次迭代之前暂停循环并等待事件