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 に答える