2010-09-20 46 views
0

今天我很厭倦陣列 - 把我扔到了這個地方。PHP陣列處理第一個孩子

所以,這裏是一個陣列的輸出:

Array 
(
[2010091907] => Array 
    (
     [home] => Array 
      (
       [score] => Array 
        (
         [1] => 7 
         [2] => 17 
         [3] => 10 
         [4] => 7 
         [5] => 0 
         [T] => 41 
        ) 

       [abbr] => ATL 
       [to] => 2 
      ) 

Array 
(
[2010091909] => Array 
    (
     [home] => Array 
      (
       [score] => Array 
        (
         [1] => 7 
         [2] => 17 
         [3] => 10 
         [4] => 7 
         [5] => 0 
         [T] => 41 
        ) 

       [abbr] => ATL 
       [to] => 2 
      ) 

Array 
(
[2010091901] => Array 
    (
     [home] => Array 
      (
       [score] => Array 
        (
         [1] => 7 
         [2] => 17 
         [3] => 10 
         [4] => 7 
         [5] => 0 
         [T] => 41 
        ) 

       [abbr] => ATL 
       [to] => 2 
      ) 

我將要書面方式一的preg_match遍歷每個[2010091907],但在此之前我可以,我不明白如何讓這條信息,或者如何調用它。我會做這樣的事情:

$json=json_decode($data,true); 
foreach ($json['dont-know-what-to-call-it'] as $key => $value) { 
      echo "Key: ".$key."; Value: ".$value."<br />"; 
} 

我只是不知道如何調用這些的每一個[2010091901]塊,喜歡什麼名字,我猜想他們打電話的。我知道如何調用分數下的東西,因爲它被命名爲「分數」,而數據就是所有這些。我不知道如何獲得數組的初始「部分」的鍵/值。最後,我將要抓取每個[2010091901],操作/使用每個[2010091901]之間的數據,然後轉到下一個「記錄」。

+1

爲什麼你需要[使用正則表達式](http://betterwaytomakealiving.com/_wordpress/wp-content/uploads/2010/05/square-peg-round-hole .JPG)? – NullUserException 2010-09-20 20:39:22

+0

我現在沒有,因爲這實際上爲我抓取每個數字,而不使用正則表達式。我對數組很新。 – drewrockshard 2010-09-20 20:51:16

回答

2

$date_keys = array_keys($json)將給出(0 => 2010091907, 1 => 2010091909, ...)。那麼你可以做

foreach ($date_keys as $d) { 
    foreach ($json[$d] as $key => $value) { 
... 

另外,如果你實際上並不需要外部數組的索引(日期值 - 2010091907,等)比你可能只是做

foreach ($json as $j) { 
    foreach ($j as $key => $value) { 
... 

忽視的關鍵$json

1

難道你不能只窩巢foreach() s?

foreach($jsondata as $somedate => $value){ 
    //do you actually need $somedate? 
    foreach($value['home']['score'] as $score){ 
     echo $score.PHP_EOL; 
    } 
} 
+0

我沒有時間來測試這個,但我真的很喜歡這種方法儘可能簡單。我實際上會讓foreach成爲一個接收數據的函數,這個函數可以調用它自己。它將能夠循環直到耗盡子節點。避免使用while()或其任何變體。 – Geekster 2010-09-20 20:58:29

0

你可以做

$json = json_decode($data, true); 
foreach($json as $ymd => $data) 
{ 
    // $ymd = [2010091907, 2010091909,… ] 
    // $data is the array starting with the key home. so $data['home']['score'][1] = 7 for the first iteration 
} 

這個回答你的問題?這不是100%清楚你問什麼