2016-03-12 3 views
-1

Мне нужен ответ json в разных массивах, но ниже код не дает никакого результата.Нужен правильный ответ json

while ($row=mysqli_fetch_assoc($result)) 
{ 
    //$data[]=$row; 
    $data['id']=$row['id']; 
    $data['name']=$row['name']; 
    $data['Latitude']=$row['Latitude']; 
    $data['Longitude']=$row['Latitude']; 

    $lat_user=$row['Latitude']; 
    $long_user=$row['Longitude']; 
    $res=file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json". 
     "?units=imperial&origins=$lat,$long&destinations=$latuser,$longuser"); 

    $json_res=json_decode($res); 
    $data['time']=$json_res->{'rows'}{0}->{'elements'}{0}->{'duration'}->{'text'}; 

} 
echo json_encode($data,true); 
+1

Вы перезапись '$ data' каждой итерации цикла –

+0

Если вы передадите 'TRUE' в качестве второго аргумента в' 'json_decode()'](), он возвращает массив, с которым его легче обрабатывать, чем объект 'stdClass'. Что-то вроде '$ json_res = json_decode ($ res, TRUE); $ data ['time'] = $ json_res ['rows'] [0] 'elements'] [0] ['duration'] ['text']; ' – axiac

ответ

0

Вы должны сохранить элементы в какой-то массив, например $dataArray в конце каждой итерации цикла и после того, как использовать этот массив для создания JSon

$dataArray = array(); 
while ($row=mysqli_fetch_assoc($result)) 
{ 
    //$data[]=$row; 
    $data['id']=$row['id']; 
    $data['name']=$row['name']; 
    $data['Latitude']=$row['Latitude']; 
    $data['Longitude']=$row['Latitude']; 

    $lat_user=$row['Latitude']; 
    $long_user=$row['Longitude']; 
    $res=file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json". 
     "?units=imperial&origins=$lat,$long&destinations=$latuser,$longuser"); 

    $json_res=json_decode($res); 
    $data['time']=$json_res->{'rows'}{0}->{'elements'}{0}->{'duration'}->{'text'}; 
    $dataArray[] = $data; 

} 
echo json_encode($dataArray,true); 
Смежные вопросы