无法从多维数组循环正确的值

显示名称

我正在尝试了解多维数组,并特意构建了以下调用$answerStringArray练习的数组

array(4) {
    [0] => array(1) {
        [0] => array(3) {
            [0] => string(8) "Swimming" 
            [1] => string(7) "Burgers" 
            [2] => string(3) "Bob"
        }
    }[1] => array(1) {
        [0] => array(3) {
            [0] => string(7) "Running" 
            [1] => string(5) "Chips" 
            [2] => string(4) "Paul"
        }
    }[2] => array(1) {
        [0] => array(3) {
            [0] => string(7) "Jogging" 
            [1] => string(5) "Salad" 
            [2] => string(5) "David"
        }
    }[3] => array(1) {
        [0] => array(3) {
            [0] => string(7) "Walking" 
            [1] => string(5) "Sauce" 
            [2] => string(5) "Frank"
        }
    }
}

我正在尝试构建一个循环,我可以回显这些值

Swimming
Running
Jogging 
Walking

在第一次迭代之后

Burgers
Chips
Salad
Sauce

等等等等

我很感激我可以写array[0][0][0];来打印游泳等,但我想了解如何循环获取所需的数据。

我尝试使用如下所示的循环,但它开始不同步,然后我意识到这可能是尝试做我所追求的事情的一种糟糕方式:

$arrayLength = count($answerStringArray);

 for($x = 0; $x <= $arrayLength; $x++){

        for ($y =0; $y<=$x; $y++) {

            for ($z =0; $z<=$y; $z++) {

            echo $answerStringArray[$x][$y][$z];

        }

      }
 }
特维马达

我很感激我可以只写 array[0][0][0]; 打印游泳等,但我想了解如何循环获取所需的数据。

这正是你可以理解的。您只需要按照您希望在屏幕上看到元素的顺序收集数组索引:

Swimming -- [0][0][0]
Running  -- [1][0][0]
Jogging  -- [2][0][0]
Walking  -- [3][0][0]

Burgers  -- [0][0][1]
Chips    -- [1][0][1]
Salad    -- [2][0][1]
Sauce    -- [3][0][1]

Bob      -- [0][0][2]
Paul     -- [1][0][2]
David    -- [2][0][2]
Frank    -- [3][0][2]

然后您可以查看索引并查看模式:要创建组,您必须在第一个索引处循环 0...3:

for($x = 0; $x <= 3; $x++){
    echo $answerStringArray[$x][0][0] . "\n";
}                               // ^
echo "\n";
for($x = 0; $x <= 3; $x++){
    echo $answerStringArray[$x][0][1] . "\n";
}                               // ^
echo "\n";
for($x = 0; $x <= 3; $x++){
    echo $answerStringArray[$x][0][2] . "\n";
}                               // ^

然后你可以使用标记的索引,它似乎从 0..2 开始,每组一步。所以把整个事情包装成一个外循环:

for($z = 0; $z <= 2; $z++){
    for($x = 0; $x <= 3; $x++){
        echo $answerStringArray[$x][0][$z] . "\n";
    }
    echo "\n";
}

然后你可以摆脱硬编码的数字,并count()在你的代码中使用:

$xcount = count($answerStringArray);
$zcount = count($answerStringArray[0][0]); // here we assume that all arrays look the same!

for($z = 0; $z < $zcount; $z++){ // "<= maxindex" became the more common "< size"
    for($x = 0; $x < $zcount; $x++){ // also here
        echo $answerStringArray[$x][0][$z] . "\n";
    }
    echo "\n";
}

然后我们可以添加中间索引的使用,并摆脱额外的换行符(该echo "\n";行已经在末尾产生了一个不需要的空行,很快引入的$y-loop 将在块之间执行相同的操作):

$answerStringArray=array(array(array("Swimming" ,"Burgers" ,"Bob"))
                        ,array(array("Running" ,"Chips" ,"Paul"))
                        ,array(array("Jogging" ,"Salad" ,"David"))
                        ,array(array("Walking" ,"Sauce" ,"Frank")));
//var_dump($answerStringArray);

echo "***\n";
$xcount = count($answerStringArray);
$ycount = count($answerStringArray[0]);
$zcount = count($answerStringArray[0][0]);    
for($z = 0; $z < $zcount; $z++){
    for($y = 0; $y < $ycount; $y++){
        for($x = 0; $x < $xcount; $x++){
            echo $answerStringArray[$x][$y][$z]."\n";
        }
        if($y < $ycount-1) echo "\n";
    }
    if($z < $zcount-1) echo "\n";
}
echo "***";

这在sandbox.onlinephpfunctions.com上运行良好

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有嵌套循环的多维数组无法正确显示

来自分类Dev

无法从C ++中的多维数组检索正确的浮点值

来自分类Dev

在游戏循环中无法正确读取数组值

来自分类Dev

foreach 循环中的数组值无法正确显示

来自分类Dev

多维数组未返回正确的值

来自分类Dev

PHP多维数组循环并按值分组

来自分类Dev

循环遍历多维数组并输出值

来自分类Dev

python多维列表:无法正确存储值

来自分类常见问题

Twig多维数组-无法访问值

来自分类Dev

Twig多维数组-无法访问值

来自分类Dev

无法从数组获取正确的值

来自分类Dev

Foreach循环多维数组

来自分类Dev

多维数组循环

来自分类Dev

无法设置 undefined 的属性“0”,在 for 循环中创建多维数组

来自分类Dev

无法使数组正确显示嵌套的for循环的结果

来自分类Dev

多维数组不让我通过循环分配值吗?

来自分类Dev

如何从多维数组访问值并循环触发查询?

来自分类Dev

通过多维数组循环并获取键的值

来自分类Dev

我无法更改多维数组的键并爆炸其值

来自分类Dev

无法打印多维数组

来自分类Dev

合并多维数组的值

来自分类Dev

更新多维数组的值?

来自分类Dev

计算多维数组值

来自分类Dev

多维数组替换值

来自分类Dev

访问多维数组值

来自分类Dev

多维数组总和值

来自分类Dev

多维数组,比较值

来自分类Dev

数组的数据值无法正确打印

来自分类Dev

使用数组的next()无法打印正确的值