0

私の配列は次のとおりです。

Array ( 
      [**Anconia**] => Array ( [1335372330] => 7 [1335190784] => 7 [1334883979] => 7 [1334672871] => 7 [1334539093] => 7 [1334337930] => 7 [1334189033] => 7 [1334007668] => 7 [1333567097] => 7 [1332973327] => 7 [1332533799] => 7 [1332215655] => 7 [1331697329] => 7 [1331239651] => 7 [1331075294] => 7 [1330983800] => 7 [1330658201] => 7 [1330484662] => 7 [1330202828] => 7 [1330028992] => 7 ) 
      [**Angellica**] => Array ( [1335372330] => 9 [1335190784] => 9 [1334883979] => 10 [1334539093] => 10 [1334337930] => 10 [1334189033] => 10 [1334007668] => 10 [1331697329] => 9 [1331239651] => 9 [1331075294] => 9 [1330983800] => 9 [1330658201] => 10 [1330484662] => 10 [1330202828] => 8 [1330028992] => 9 )
)

TimeStamp    Tally Number
[1335372330] => 7

これを抽出しようとしたときに foreach を使用すると、私は混乱しました。NAME(太字で印刷)を一度印刷し、タイムスタンプを表示したい=いくつ。

どうすればそれについて行くでしょうか?

前もって感謝します!

編集:

私の試み

foreach($results as $k => $v) { 
   $THEAD .= "<th scope='col'>".$k."</th>"; 
   $TBODY .= "<tr><th scope='row'>".$v."</th>"; 
   $TBODY2 .= "<td>".$results[$k]."</td>"; 
}
4

3 に答える 3

2

一般に、単一レベルの配列をループするのと同じ方法で、ネストされた配列をループできます。例:

$myArray = array(
    'first-level-first-key' => array(
        'second-level-first-key' => 'some value',
        'second-level-second-key' => 'another value'
    ),
    'first-level-second-key' => array(
        'seond-level-another-key' => 'yet another value'
    )
);

foreach($myArray as $first_level_key => $first_level_value) {
    echo 'Key: '. $first_level_key .'<br />';
    echo 'Values: ';
    foreach($first_level_value as $second_level_key => $second_level_value) {
        echo $second_level_value .', ';
    }
    echo '<br /><br />';
}

これは出力されます:

Key: first-level-first-key
Values: some value, another value,

Key: first-level-second-key
Values: yet another value,

これで、ネストされた配列をループする方法がわかりました。楽しむ!

編集

以下の tmyie のコメントへの回答として、もう少し説明があります: ご覧のとおり、すべての要素はそれ自体が配列です:

$myArray['first-level-first-key'] = array('second-level-first-key' => ... );

最初の foreach は、すべての「第 1 レベル」の配列をループします (私の例では、「第 1 レベル -...」というキーを持つ要素)。したがって、そのループ内で、変数$first_level_valueは配列を保持します。2 番目の foreachは、その第 2 レベルの配列をループします。このループのネストは、その第 2 レベルの要素にさらに別の配列を保存した場合、事実上無限です。

目の前にいくつかのボックスがある場合と比較してください。最初のループでは、「目の前にあるすべてのボックスを開けてください」と言います。次に、開いたすべてのボックスに対して、ネストされたループが「そのボックスで見つけたすべてのボックスを開きます」などと伝えます

これを書いた場合、アプリケーションの設計に大きな問題がある可能性が高いですが、次の例は完全に有効です。

foreach($myArray as $x) {
    foreach($x as $y) {
        foreach($y as $z) {
            foreach($z as $p) {
                // etc
            }
        }
    }
}
于 2012-04-26T10:49:19.553 に答える
1

$vはあなたの別の配列なので、別foreachのことをする必要がありますforeach:

foreach($results as $k => $v) {
   foreach($v as $timestamp => $tally) {
      // do whatever you want
   }
}

私はあなたに完全なコードを提供していないので、それをあなたの演習として残したいと思いますが、それが - あなたの質問によると - 多次元配列を抽出する方法です

于 2012-04-26T10:48:00.507 に答える
1

あなたはこれを試すことができます

<?php 

echo '<table>';
echo '  <tr>';
echo '    <th>Time Stamp</th>';
echo '    <th>Tally </th>';
echo '  </tr>';

    foreach($myArray as $timeStampArray) 
    {
       foreach($timeStampArray as $timestamp => $tally) 
       {

          echo '  <tr>';
          echo '    <td>'.$timestamp .'</td>';
          echo '    <td>'.$tally.' </td>';
          echo '  </tr>';
       }
    }
echo '</table>';
?>
于 2012-04-26T10:57:44.773 に答える