Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP foreach loop without the as?

I'm retrieving data from a json feed like this:

{
  'data': {

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

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

  }
}

And grabbing the data with a function like this:

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;

}

I want to set up a foreach loop something like this:

   foreach ($myarray as $data){

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

   }

And have it return something like this :

 12
 53
 8

 42
 49
 18

 14
 900
 2

But foreach($myarray as $data) is not working.

The problem is that it only returns 1 character from each key in the array which seems to be random.

Is there something that I could do that would be like not having "as" in the foreach at all?

Like:

  foreach($myarray){

      // the goods    

  }

Thanks in advance.

like image 832
Michael Avatar asked Jan 21 '26 02:01

Michael


1 Answers

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'];

   }

You should get the result in the way you want. You will always need the "as" with foreach.

like image 144
Green Black Avatar answered Jan 23 '26 18:01

Green Black



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!