【问题标题】:Array and For loop数组和 For 循环
【发布时间】:2019-11-17 21:16:36
【问题描述】:

我有

$arr=array(array(1,2,3),
           array(4,5,6),
           array(7,8,9),
           array(10,11,12))

我需要使用 for 循环按以下顺序显示它:1,4,7,10,2,5,8,11,3,6,9,12。 过去两天我一直在为此烦恼,有人可以帮助我吗?谢谢

【问题讨论】:

  • 内部数组的长度是否相同(始终为 3)?此外,您应该分享您的尝试。
  • 是的,它们的长度总是相同的。我一直在尝试这样的事情for($i = 0; $i < count($arr); $i++) { for($u = 0; $u <count($arr[$i]); $j++) { echo $arr[$i][$u]; echo '<br />'; } }

标签: php arrays for-loop


【解决方案1】:

以下内容可能会有所帮助

for($i = 0; $i < 3; $i++) {
    for($j = 0; $j < 4; $j++) {
        echo $arr[$j][$i];
    }
}

您有效地循环浏览 3 列 ($i) 和 4 行 ($j) 并引用适当的 $arr 元素。

如果您想使用更动态(计数)的解决方案,您可以使用例如:

$count = count($arr);

for($i = 0; $i < 3; $i++) {
    for($j = 0; $j < $count; $j++) {
        echo $arr[$j][$i];
    }
}

updated demo

注意:for 循环外使用count() 效率更高,因此您只需调用一次函数并在循环内使用结果。

【讨论】:

  • 如果我以后想在这些数组中添加更多信息,如何使用count($arr) 来完成?
  • @lovelace 您的编辑不正确。在这种情况下,$arr 对应于 $j 索引。应该只是for ($j = 0; $j &lt; $count; $j++)
【解决方案2】:

这个简单的解决方案适用于使用主数组及其子数组的非预定义长度:

$arr=array(array(1,2,3),
    array(4,5,6),
    array(7,8,9),
    array(10,11,12));

$count_arr = count($arr);       // length of the main array
$count_arr_arr = count($arr[0]);// length of the child array (each child should be the same length)
$res_arr = [];

for($i = 0; $i < $count_arr_arr; $i++){
    for($j = 0; $j < $count_arr; $j++){
        $res_arr[] = $arr[$j][$i];        // getting elements from child arrays 
    } 
}

echo join(', ', $res_arr);                // presenting the result as a string '1, 2, 3, etc.'

Demo

【讨论】:

    【解决方案3】:

    您可以为此使用循环嵌套。所以遍历数组并在每个外循环上增加列的索引。将值存储在新数组中以便正确输出。

    $arr=array(array(1,2,3),
    array(4,5,6),
    array(7,8,9),
    array(10,11,12));
    
    $new = [];
    $i = 0;
    
    foreach($arr as $set) {
        foreach($arr as $data) {
            if(isset($data[$i])) $new[] = $data[$i];
        }
        $i++;
    }
    
    echo join(',', $new), PHP_EOL;
    

    1,4,7,10,2,5,8,11,3,6,9,12

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 2020-11-20
      • 2013-06-19
      • 1970-01-01
      相关资源
      最近更新 更多