Android — неопределенная ошибка смещения в php?

Здравствуйте все!

Я пытаюсь проанализировать JSON / XML из OSM (Overpass Turbo) в php и пытаюсь получить значение speedlimit. Я могу получить значение, но до этого есть некоторые ошибки

«Неопределенное смещение: 1 в C: \ xampp \ htdocs \ android_connect \ test-osm.php в строке 44», что это за код if ($temp[1]=="maxspeed")

Я пытаюсь это:

Во-первых: после получения результата от OSM я перебиваю ответ:<«тег в массив с именем ‘resultArr’

Второе: тогда я разбиваю ‘resultArr’ с помощью » « msgstr «теги в массив с именем» temp «.

Ниже приведен файл php:

<?php
//$lat  = isset($_GET['lat']) ? floatval($_GET['lat']) :  "";
//$lng = isset($_GET['lng']) ? floatval($_GET['lng']) :  "";

$lat  = 24.883968;
$lng = 55.544899;

//$latm = -0.00015 + $lat;
$latm = 54.580460;
//echo $latm. "\n";
//$latp = 0.00015 + $lat;
$latp = 54.580860;
//echo $latp. "\n";
//$lngm = -0.00015 + $lng;
$lngm = 24.326180;
//echo $lngm. "\n";
//$lngp = 0.00015 + $lng;
$lngp = 24.336580;
//echo $lngp;

$json_url = 'http://overpass.osm.rambler.ru/cgi/interpreter';

$data = '<query type="way"> <bbox-query s="' . $lngm . '" w="' . $latm . '" n="' . $lngp . '" e="' . $latp . '"/> <!--this is auto-completed with the current map view coordinates.--> </query> <print/>';

$ch = curl_init( $json_url );

$options = array(
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
CURLOPT_POSTFIELDS => $data,
CURLOPT_RETURNTRANSFER => true,
);

curl_setopt_array($ch, $options);
$result =  curl_exec($ch);

$resultArr = explode("<",$result); //Array without "<" tags!

foreach ($resultArr as $val) {
$temp = explode('"', $val); //Array without """ tags!
//print_r ($temp);

//Trying to check if temp[1] is maxspeed, then get the value of temp[3]...
if ($temp[1]=="maxspeed")
$speedlimit=$temp[3];
}
echo $speedlimit;

?>

Примечание: комментарии в этом только для проверки …

Я знаю, что делаю небольшую ошибку, я надеюсь, что кто-то может сказать мне, что я делаю неправильно или направить меня в правильном направлении !!

Большое спасибо!

0

Решение

проблема заключается в том, что не все способы содержат тег maxspeed, поэтому вам также необходимо проверить,

isset($temp[1]) && $temp[1] == "maxspeed"

то, что вы также можете сделать, это использовать simplexml следующим образом:

$xml = simplexml_load_string($result);

foreach ($xml->way as $i) {
foreach ($i->tag as $tag) {
if ($tag['k'] == "maxspeed") {
$maxspeed = $tag['v'];
break;
}
}
}

echo $maxspeed;
1

Другие решения

Синтаксическая ошибка, может быть? Отсутствуют фигурные скобки для оператора IF?

if ($temp[1]=="maxspeed")
$speedlimit=$temp[3];

должно быть :

if ($temp[1]=="maxspeed") {
$speedlimit=$temp[3];
}
1

По вопросам рекламы [email protected]