-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 に答える