TAGS :Viewed: 4 - Published at: a few seconds ago

[ php multidimensional array how to get values ]

This is my php array $data.

    Array
   ( 
   [upcoming] => Array 
              ( 
              [webinars] => Array 
                          ( 
                           [0] => Array 
                                 ( 
                                 [webinarKey] => 123456 
                                 [subject] => webinar title ...
                                 [times] => Array
                                         (
                                        [0] => Array
                                            (
                                           [startTime] => 2014-04-03T00:00:00Z

Please check my code below. I want to get values of "webinarkey" and "subject" and "start date - with date formatted" and put them into my select box. I can now populate "webinarkey and "subject". Thank you all to help to to populate "webinarkey and subject" but now i want to show "start date with date format as well.

  echo '<form method="POST"><select>';
  foreach ($data["upcoming"]["webinars"] as $webinar) {
  echo '<option value="' . htmlspecialchars($webinar["webinarKey"]) . '">' . htmlspecialchars($webinar["subject"]) . htmlspecialchars($webinar["times"]["startTime"]) . '</option>';

}
    echo '</select></form>';

Please help me to show start date as well.

Answer 1


$data = array(/**/);
foreach ($data["upcoming"]["webinars"] as $webinar) {
    echo '<option value="' . htmlspecialchars($webinar["webinarKey"]) . '">' . htmlspecialchars($webinar["subject"]) . '</option>';
}

From what I gather the only array you need to loop over is $data["upcoming"]["webinars"].

Ensure your output HTML is valid and your data is escaped properly.

Answer 2


Since you are trying to access a value in a multidimensional array, you cannot use -> as that is for properties of objects. Instead you need to access it like a normal array: $array[key]

Updated Code:

echo '<select>';
foreach ($webinars as $obj)
{
    foreach ($obj['webinars'] as $ob)
    {

            echo '<option value='.$ob['webinarKey'].'>'.$ob['subject'].'</option>';

    }
}
echo '</select>';

Answer 3


You're trying to use properties, it's an array not an object.

You need to use $ob['----'] instead of $ob-> notation

echo '<select>';
foreach ($webinars as $obj)
{
    foreach ($obj['webinars'] as $ob)
    {

            echo '<option value='.$ob['webinarKey'].'>'.$ob['subject'].'</option>';

    }
}
echo '</select>';