转换为php多维数组后如何遍历json对象?

时间:2018-09-24 09:31:48

标签: php json laravel multidimensional-array

{
"timeZone":"Africa/Lagos",
"days":
[
    {
        "Monday":["07:30 AM","08:00 AM","08:30 AM","09:00 AM","09:30 AM","10:00 AM","10:30 AM","11:00 AM","11:30 AM","12:00 PM","12:30 PM","01:00 PM","01:30 PM","02:00 PM","02:30 PM","03:00 PM","03:30 PM","04:00 PM","04:30 PM","05:00 PM","05:30 PM","06:00 PM","06:30 PM","07:00 PM"]
    },
    {
        "Tuesday":["07:30 AM","08:00 AM","08:30 AM","09:00 AM","09:30 AM","10:00 AM","10:30 AM","11:00 AM","11:30 AM","12:00 PM","12:30 PM","01:00 PM","01:30 PM","02:00 PM","02:30 PM","03:00 PM","03:30 PM","04:00 PM","04:30 PM","05:00 PM","05:30 PM","06:00 PM","06:30 PM","07:00 PM"]
    },
    {
        "Wednesday":["07:30 AM","08:00 AM","08:30 AM","09:00 AM","09:30 AM","10:00 AM","10:30 AM","11:00 AM","11:30 AM","12:00 PM","12:30 PM","01:00 PM","01:30 PM","02:00 PM","02:30 PM","03:00 PM","03:30 PM","04:00 PM","04:30 PM","05:00 PM","05:30 PM","06:00 PM","06:30 PM","07:00 PM"]
    },
    {
        "Thursday":["07:30 AM","08:00 AM","08:30 AM","09:00 AM","09:30 AM","10:00 AM","10:30 AM","11:00 AM","11:30 AM","12:00 PM","12:30 PM","01:00 PM","01:30 PM","02:00 PM","02:30 PM","03:00 PM","03:30 PM","04:00 PM","04:30 PM","05:00 PM","05:30 PM","06:00 PM","06:30 PM","07:00 PM"]
    },
    {
        "Friday":["07:30 AM","08:00 AM","08:30 AM","09:00 AM","09:30 AM","10:00 AM","10:30 AM","11:00 AM","11:30 AM","12:00 PM","12:30 PM","01:00 PM","01:30 PM","02:00 PM","02:30 PM","03:00 PM","03:30 PM","04:00 PM","04:30 PM","05:00 PM","05:30 PM","06:00 PM","06:30 PM","07:00 PM"]
    }
]
}

我该如何循环获取所有日期及其时间的值? $result['timeZone']可以正确打印出该值,但是$result['days']则不能。

 <?php 
   $result=json_decode($doctor->time_availiable,true);
   echo $result['timeZone'];

    foreach ($result['days'] as $key => $value) {
       echo $key.':'.$value;
    }

 ?>

3 个答案:

答案 0 :(得分:0)

在您的示例中,$value方法内部的foreach()是一个数组,无法回显。

尝试一下:

<?php 
   $result=json_decode($doctor->time_availiable,true);
   echo $result['timeZone'];

    foreach ($result['days'] as $dayFromArray) {
        foreach($dayFromArray as $dayFromObject => $hours) {
            foreach($hours as $hour) {
                echo $day.':'.$hour."\n";   
            }
            echo "\n";
        }
    }
 ?>

答案 1 :(得分:0)

尝试下面,

$results = json_decode($doctor->time_availiable, true);

foreach ($results as $key => $result)
{

    foreach ($results['days'] as $dayName => $timeAry)
    {
        //in timeAry you will get respective day times
    }
}

答案 2 :(得分:0)

这将使您全程工作,请注意一些json解码为对象,而不是数组

$result=json_decode($doctor->time_availiable,true);

echo $ result-> timeZone;

foreach ($result['days'] as $key => $value) {
   foreach ($value as $weekday => $hours) {
        echo $weekday;
        foreach($hours as $hour) {
            echo $hour . ', ';
        }
   }    
}