2012-04-26 36 views
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>"; 
} 
+0

什麼時間戳? – PeeHaa 2012-04-26 10:42:19

+0

foreach($ results as $ k => $ v){ \t \t \t \t \t $ THEAD。=「」。$ k。「」; 。 \t \t \t \t \t $ TBODY = 「」 $ V 「」。 \t \t \t \t \t $ TBODY2 = 「​​」 $結果[$ k]的 「」。; \t \t \t \t} 那些是什麼,我基本上嘗試,但一直給我$陣列結果 – sgkdnay 2012-04-26 10:43:01

+0

參見上面的「時間戳和理貨號」 – sgkdnay 2012-04-26 10:44:40

回答

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循環遍歷所有的'第一級'數組(在我的例子中是帶有'first-level -....'鍵的元素)。因此在該循環中,變量$first_level_value包含一個數組。第二個foreach循環通過,第二級,數組。如果您在第二層元素中保存了另一個數組,則這種循環嵌套實際上是無止境的。

將它與您面前的幾個盒子進行比較。在第一個循環中,你說'打開我面前的每一個盒子'。然後,對於已打開的每個方框,嵌套循環都會顯示「打開在該方框中找到的每個框」,依此類推。

雖然最有可能是一件很錯了你的應用程序的設計,如果你願意寫這篇文章,下面的例子是完全有效的:

foreach($myArray as $x) { 
    foreach($x as $y) { 
     foreach($y as $z) { 
      foreach($z as $p) { 
       // etc 
      } 
     } 
    } 
} 
+0

優秀交代,現在我可以得到清晰的圖片尋找什麼:)非常感謝! – sgkdnay 2012-04-26 17:38:43

+0

第二次循環是如何進行的?它如何知道在第一個數組之後停止(或者是默認行爲)? – 2014-01-13 21:12:56

1

由於$v是你foreach另一個數組,你需要做的另一foreach

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

我不會給你一個完整的代碼,並且寧願將它作爲練習,但按照您的問題,這是如何提取多維數據集的離散數組

+0

感謝您指出我朝着正確的方向:) – sgkdnay 2012-04-26 17:38:57

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>'; 
?> 
+0

這工作除了缺少「人的名字」,但設法做我自己的,謝謝你的信息:) – sgkdnay 2012-04-26 17:39:40