-1

伙计们,我有一个这样的数组:

  array(3) {
    [2]=>
    array(1) {
      ["name"]=>
      array(2) {
        [0]=>
        string(13) "row1"
        [1]=>
        string(13) "row3"
      }
    }
    [5]=>
    array(1) {
      ["name"]=>
      array(2) {
        [0]=>
        string(15) "row1"
        [1]=>
        string(15) "row3"
      }
    }
    [3]=>
    array(1) {
      ["name"]=>
      array(2) {
        [0]=>
        string(13) "row1"
        [1]=>
        string(13) "row3"
      }
    }

我想要实现的是让 foreach 循环 0 个元素(row1),然后循环 1(row3)并像这样继续。有没有办法做到这一点?

4

2 回答 2

1

您可以尝试重建阵列:

$rows = array();
foreach($array as $subarray) 
  foreach($subarray as $key => $value)  
    $rows[$key][] = $value;

此时,数组中的所有相同子元素都在一个新数组中,现在您可以轻松地循环遍历子元素:

  foreach($rows as $key => $value)  
    echo 'processing row: ' . $key ' with value ' . $value;
于 2012-09-22T08:51:13.947 回答
0

我找到了解决这个问题的不同方法,JvdBeg 解决方案效果很好,但是如果有人陷入类似的情况,我就是这样做的: $key = key($arr); $keys = array_keys($arr);

    for ($i=0;$i<sizeof($arr[$key]['index']);$i++) {
      for($k=0;$k<sizeof($arr);$k++) {
        $key = $keys[$k];
        echo "\n";
      }
    }
于 2012-09-22T09:10:37.210 回答