试图在PHP中访问数组内的JSON数组

时间:2018-05-21 06:42:26

标签: php arrays json

伙计这是我的数组,我想从名为time_array[]的数组中访问变量

{"type":"updatebusiness","provider_id":"1","business_name":"uur","email_work":"ndnnf@hmdmck.fkfm","phone_work":"8989889889","vat_no":"39r","address1":"gehjfmjhjfk","address2":"gehjfmjhjfk","postcode":"367383","latitude":"updatebusiness","longitude":"updatebusiness","time_array":[{"day":"Monday","start_time":"10 : 00 AM","end_time":"01 : 00 PM"},{"day":"Friday","start_time":"01 : 00 PM","end_time":"01 : 00 PM"}]}

这是我的PHP代码

$requestBody = file_get_contents('php://input');
$requestBody = json_decode($requestBody, TRUE);



            $time_array=$requestBody['time_array'];
            $json_array = json_decode($time_array,True);

            for ($i = 0; $i < sizeof($json_array); $i++)
            {
                $day = $json_array[$i]->day; 
                $start_time = $json_array[$i]->start_time;
                $end_time = $json_array[$i]->end_time;

                $insert_time="INSERT INTO `nesbaty_working_time` (`provider_id`,
                                                  `day`,
                                                  `opening_time`, 
                                                  `closing_time`, 
                                                  `time`, 
                                                  `status`) 
                                                  VALUES ('".$provider_id."',
                                                  '".$day."', 
                                                  '".$start_time."',  
                                                  '".$end_time."',  
                                                  '".$date."',
                                                  '".$status."')";
                mysqli_query($con, $insert_time);

所以我很困惑如何访问数组中的数组

2 个答案:

答案 0 :(得分:1)

您无需再次解码$ time_array变量。一旦你做到了:

$requestBody = json_decode($requestBody, TRUE);

您可以像这样访问time_array:

$time_array = $requestBody['time_array'];

而且你可以像这样循环:

foreach($time_array AS $time){
   $day = $time['day'];
   $start_time = $time['start_time'];
   $end_time = $time['end_time'];
   //Your insert query here
}

答案 1 :(得分:0)

我第一次编码数据,所以整个数组在php字符串中转换,内部的第二个数组也转换为字符串,但现在我再次对其进行编码然后再次解码并且它有效..

            $time_array=$requestBody['time_array'];
            $abc=json_encode($time_array);
            $json_array = json_decode($abc);

            for ($i = 0; $i < sizeof($json_array); $i++)
            {


                $day = $json_array[$i]->day; 
                $start_time = $json_array[$i]->start_time;
                $end_time = $json_array[$i]->end_time;

                $insert_time="INSERT INTO `nesbaty_working_time` (`provider_id`,
                                                  `day`,
                                                  `opening_time`, 
                                                  `closing_time`, 
                                                  `time`, 
                                                  `status`) 
                                                  VALUES ('".$provider_id."',
                                                  '".$day."', 
                                                  '".$start_time."',  
                                                  '".$end_time."',  
                                                  '".$date."',
                                                  '".$status."')";
                mysqli_query($con, $insert_time);

            }