0

我正在从这样的 json 提要中检索数据:

{
  'data': {

   'stuffs': [
     {
       'cats': '12',
       'dogs': '53',
       'bananas': '8',
     },
     {
       'cats': '42',
       'dogs': '49',
       'bananas': '18',

     },
     {
       'cats': '14',
       'dogs': '900',
       'bananas': '2',
     }]

  }
}

并使用如下函数获取数据:

function getData($url){

     $json = file_get_contents($url);                                      
     $json_output = json_decode($json, TRUE);

       foreach ($url['data']['stuffs'] as $benum){

         $cats = $benum['cats'];
         $dogs = $benum['dogs'];
         $bananas = $benum['bananas'];

       }



    $myarray = array(

    "cat" => $cats,
    "dog" => $dogs,
    "banana" => $bananas,

    );

  return $myarray;

}

我想设置一个像这样的foreach循环:

   foreach ($myarray as $data){

   echo $data['cat'];
   echo $data['dog'];
   echo $data['banana'];

   }

并让它返回如下内容:

 12
 53
 8

 42
 49
 18

 14
 900
 2

但是 foreach($myarray as $data) 不起作用。

问题是它只从数组中的每个键返回 1 个字符,这似乎是随机的。

有没有什么我可以做的,就像在 foreach 中根本没有“as”一样?

像:

  foreach($myarray){

      // the goods    

  }

提前致谢。

4

2 回答 2

1

如果你想使用 foreach 你仍然必须使用 as

foreach ($myarray as $val){
    echo $val;
}

对于测试数组:

$myarray = array(
    "cat" => '12',
    "dog" => '5',
    "banana" => '7'
);

这将输出

12
5
7
于 2013-01-28T22:17:18.067 回答
1
function getData($url){

     $myarray = array();

     $json = file_get_contents($url);                                      
     $json_output = json_decode($json, TRUE);

       foreach ($url['data']['stuffs'] as $benum){

         $cats = $benum['cats'];
         $dogs = $benum['dogs'];
         $bananas = $benum['bananas'];

         $myarray[] = array(

            "cat" => $cats,
           "dog" => $dogs,
            "banana" => $bananas,

            );

       }

}

 foreach ($myarray as $data){

   echo $data['cat'];
   echo $data['dog'];
   echo $data['banana'];

   }

你应该以你想要的方式得到结果。您将始终需要 foreach 的“as”。

于 2013-01-28T22:19:26.020 回答