PHP的foreach循环没有as?

时间:2013-01-28 22:13:31

标签: php arrays json foreach feed

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

{
  '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作为$ data)无效。

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

我能做些什么就像在foreach中没有“as”一样?

像:

  foreach($myarray){

      // the goods    

  }

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

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

对于测试数组:

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

这将输出

12
5
7

答案 1 :(得分: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”。