1

So I'm making a plugin to output facebook data onto wordpress websites, the way I do this is by retrieving facebook data via the graph api in json format, then decoding that json data in php to get an array, this is the full array that is returned when I do a variable dump of the json decoded data:

array
'data' =>

array
  0 => 
    array
      'name' => string '' (length=21)
      'start_time' => string '' (length=19)
      'end_time' => string '' (length=19)
      'location' => string '' (length=11)
      'id' => string '' (length=15)
      'rsvp_status' => string '' (length=9)
  1 => 
    array
      'name' => string '' (length=27)
      'start_time' => string '' (length=19)
      'end_time' => string '' (length=19)
      'id' => string '' (length=15)
      'rsvp_status' => string '' (length=9)
  2 => 
    array
      'name' => string '' (length=35)
      'start_time' => string '' (length=19)
      'end_time' => string '' (length=19)
      'location' => string '' (length=13)
      'id' => string '' (length=15)
      'rsvp_status' => string '' (length=9)
'paging' => 
array
  'previous' => string '' (length=224)
  'next' => string '' (length=211)

Now since this is a multiple dimensional array I use multiple foreach loops to get at the data, as shown below:

foreach ($data as $data) {
    foreach ($data as $data) { ?>

    <div class="eventSegment">
        <h3><?php echo $data['name']; ?></h3>
        <p><?php echo strstr($data['start_time'], T, true); ?></p>
        <a href="http://www.facebook.com/<?php echo $data['id']; ?>">
            <img src="<?php echo $plugin_dir; ?>/images/rsvpfb.png" alt="RSVP on Facebook" class="RSVPfacebook" />
        </a>    
    </div>

    <?php
    }
}

endif; }  ?>

Messy I know ;) but I always tidy up my code at the end, anyway, the result is completely fine, except for two blocks of data that shouldn't be there, the $data['name'] variable corresponds to 'h' in the both of them, there is no date at all, and their id is simply 'h' as well, I am stumped by this and don't know where to begin searching for a solution.

2 Answers 2

2

You only need one foreach:

assuming $data['data'] as start:

foreach ($data['data'] as $array_index => $this_data) {
   echo $this_data['name'].'<br />';
}
Sign up to request clarification or add additional context in comments.

2 Comments

Thank you so much, can you explain why 2 extra elements were appearing? It'd help a lot :)
With your attemp you looped twice through your array I guess, cause you had $data in the first foreach, which is the same in your second foreach. As @TV productions said, do not use the same variable name again in foreach, cause you will overwrite it with itself.
0

You cannot use the same variable. Use something like

foreach($data as $key=>$value) {
 //..etc
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.