Попытка получить доступ к массиву JSON внутри массива в PHP - PullRequest
0 голосов
/ 21 мая 2018

Ребята Это мой массив, и я хочу получить доступ к переменной из массива с именем 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 голосов
/ 21 мая 2018

1-й раз я закодировал данные, чтобы весь массив был преобразован в строку 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);

            }
0 голосов
/ 21 мая 2018

Вам не нужно снова декодировать переменную $ 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
}
...