Я работаю над Zillow API, чтобы получить результаты поиска, и я столкнулся с проблемой. Я использую свой инструмент GetSearchResults и получаю сообщение об ошибке:
Попытка получить свойство необъекта
на линии, где я использую ->
запись для получения значений из XML. Я прочитал дискуссии по этому вопросу и, возможно, я делаю запись неправильно, но я не вижу ничего плохого. Как я могу получить данные от этого объекта?
Вот мой текущий код.
<?php
$zillow_id = 'X1-ZWz19g3j9ffabv_7galu';
$search = isset($_GET['5411 lydia ave'])?$_GET['5411 lydia ave']:"";
$citystate = isset($_GET['kansascitymo64110'])?$_GET['kansascitymo64110']:"";
$address = urlencode($search);
$citystatezip = urlencode($citystate);
$url = "http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=$zillow_id&address=$address&citystatezip=$citystatezip";
$result = file_get_contents($url);
$data = simplexml_load_string($result);
$zpid=$data->response->results->result[0]->zpid;
echo $zpid;
?>
Ниже приведен XML-код, о котором я говорю:
<SearchResults:searchresults xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns:SearchResults="http://www.zillow.com/static/xsd/SearchResults.xsd" xsi:schemaLocation="http://www.zillow.com/static/xsd/SearchResults.xsd http://www.zillowstatic.com/vstatic/5b67875/static/xsd/SearchResults.xsd">
<request>...</request>
<message>...</message>
<response>
<results>
<result>
<zpid>2349353</zpid>
<links>...</links>
<address>
<street>5411 Lydia Ave</street>
<zipcode>64110</zipcode>
<city>Kansas City</city>
<state>MO</state>
<latitude>39.02831</latitude>
<longitude>-94.568747</longitude>
</address>
<zestimate>...</zestimate>
<localRealEstate>...</localRealEstate>
</result>
</results>
</response>
</SearchResults:searchresults>
result
в этом случае, по крайней мере, не массив. Таким образом, правильный синтаксис будет
echo $data->response->results->result->zpid;
Если у вас есть более одного результата, как это:
<response>
<results>
<result>
<zpid>2349353</zpid>
</result>
<result>
<zpid>5676567</zpid>
</result>
<result>
<zpid>987987</zpid>
</result>
</results>
</response>
Вы должны получить zpid
следующим образом :
$zpid=$data->response->results->result[0]->zpid; // 2349353
$zpid=$data->response->results->result[1]->zpid; // 5676567
$zpid=$data->response->results->result[2]->zpid; // 987987