2010-09-20 99 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%清楚你问什么