Php 我无法在此返回json中获取特定值

Php 我无法在此返回json中获取特定值,php,json,get,Php,Json,Get,下面的代码返回给我一个json,我想得到Lat和Long的值,但我无论如何都不能,我已经尝试过几种形式(使用网站的其他教程),有人能帮我吗 <?php $data = array('email'=>'XXXUSERXXX','password'=>'XXXPASSXXX'); $data2 = json_encode($data); $headers = [ 'x-api-key: XXXKEYXXX', 'Accept: application/j

下面的代码返回给我一个json,我想得到Lat和Long的值,但我无论如何都不能,我已经尝试过几种形式(使用网站的其他教程),有人能帮我吗

<?php


  $data = array('email'=>'XXXUSERXXX','password'=>'XXXPASSXXX');
  $data2 = json_encode($data);
$headers = [
    'x-api-key: XXXKEYXXX',
    'Accept: application/json',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: en-US,en;q=0.5',
    'Cache-Control: no-cache',
    'Content-Type: application/json',
    'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0',
    'Date: Tue, 26 Jan 2017 21:13:37 GMT'
];


  $ch = curl_init();
  $url = 'https://api.inthegra.strans.teresina.pi.gov.br/v1/signin';

  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_POST, 1);                //0 for a get request
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
  curl_setopt($ch,CURLOPT_POSTFIELDS,$data2);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
  //curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,100);
//  curl_setopt($ch,CURLOPT_TIMEOUT, 100);
  $response = curl_exec($ch);

  curl_close ($ch);
 $token = json_decode($response);
 $auth = $token->token;
 #print $auth;

 #second

 $headers2 = [
    'x-api-key: XXXKEYXXX',
    'x-auth-token:'.$auth,
    'Accept: application/json',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: en-US,en;q=0.5',
    'Cache-Control: no-cache',
    'Content-Type: application/json',
    'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0',
    'Date: Tue, 26 Jan 2017 21:13:37 GMT'
];

 $ch2 = curl_init();
  $url2 = 'https://api.inthegra.strans.teresina.pi.gov.br/v1/veiculos';
#$header = array('x-api-key' => 'XXXKEYXXX','x-auth-token' => 'XXXTOKENXXX');
 //$header2 = json_encode($header);

curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers2);

#curl_setopt($ch, CURLOPT_HTTPHEADER, array('x-api-key' => 'XXXKEYXXX','x-auth-token' => 'XXXTOKENXXX'));
  curl_setopt($ch2,CURLOPT_URL,$url2);
  #curl_setopt($ch,CURLOPT_POST, 0);                //0 for a get request
 curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, 1);

  //curl_setopt($ch, CURLOPT_HTTPHEADER, "x-auth-token : XXXTOKENXXX");
  //curl_setopt($ch,CURLOPT_POSTFIELDS,$data2);
  curl_setopt($ch2,CURLOPT_RETURNTRANSFER, 1);
  //curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,100);
//  curl_setopt($ch,CURLOPT_TIMEOUT, 100);
  $response2 = curl_exec($ch2);

  curl_close ($ch2);

 //$string = json_decode($response2, TRUE);

//print_r($string[0]);

$jsonIterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($response2, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);

foreach ($jsonIterator as $key => $val) {
    if(is_array($val)) {
        echo "$key";
    } else {
        echo "$key => $val\n";
    }
}



?>

您可以将响应转换为数组并迭代数组元素:

$arr_data = json_decode($response2, true);

foreach( $arr_data as $key => $value ) {
    foreach ($value as $key2 => $sub_value) {
        $lat = $sub_value['Veiculos'][0]['Lat'];
        $long = $sub_value['Veiculos'][0]['Long'];
        echo $lat . ', ' . $long;        
    } 
}

能否添加var_dump($response2);旋涡关闭前($ch2);然后在这里发布一个输出?嗨,输出是:string(27808)“[{”Linha:{”CodigoLinha:“0402”,“Denomicao:“VILA BANDEIRANTE-PLANALTO in inga FREI SERAFIM”,“Origem:“VILA BANDEIRANTE”,“returno:“PCA.BANDEIRA”,“Circular:”true,“Veiculos:[{”CodigoVeiculo:“02154”,“Lat:”-5.06155800”,“Long:“-42.77045700”,“Hora:“19:29:52”}}}}}}有几个数据集是这种类型的:(相同的结构),我没有把所有的都放进去,因为它不适合:/perfect!接受这个答案将不胜感激)
$arr_data = json_decode($response2, true);

foreach( $arr_data as $key => $value ) {
    foreach ($value as $key2 => $sub_value) {
        $lat = $sub_value['Veiculos'][0]['Lat'];
        $long = $sub_value['Veiculos'][0]['Long'];
        echo $lat . ', ' . $long;        
    } 
}