Возникли проблемы при извлечении значений из API Yelp через PHP - PullRequest
0 голосов
/ 09 сентября 2011

Позвольте мне быть честным: я хакер PHP.Здесь, наверное, какие-то глупые ошибки.Пожалуйста, укажите их, если вы их видите.

Что я пытаюсь сделать: Я создаю страницу для ресторана, в которой будут отображаться их отзывы о Yelp.Я использую Yelp Phone API, чтобы получить отзывы для конкретного бизнеса.Пожалуйста, просмотрите пример ответа в документации Yelp API, расположенной здесь: http://www.yelp.com/developers/documentation/phone_api#sampleResponse

Что я сделал:

  • Успешно подключен к API и возвращенответ
  • отражает значения из массива ответов в цикле foreach.

Если вы посмотрите документацию, вы увидите, что есть несколько уровней ответа.Я могу легко напечатать, повторить любые значения из второго уровня, но то, что я действительно хочу, все вложено в раздел «отзывы» ответа.У меня проблемы с выяснением того, как отобразить значения в разделе отзывов (например, user_name, review_excerpt и т. Д.).

Мой код:

$yelpstring = file_get_contents("http://api.yelp.com/phone_search?phone=[redactedphonenumber]&ywsid=[redactedapikey]", true);
$obj = json_decode($yelpstring);

foreach($obj->businesses as $key => $business)
{
$reviews = $business->reviews;

//print_r($reviews);
echo $reviews['user_name'];
}

Если я повторяю $ обзоры, я просто получаю слово "Массив".Если я печатаю $ ($ reviews), я получаю ожидаемый список ключей и значений.Если я попытаюсь отобразить определенное значение из массива (echo $ reviews ['user_name']), я ничего не получу. Любая информация о том, что я делаю неправильно, будет принята с благодарностью. Я уверен, что упускаю что-то простоеСпасибо за потраченное время!

Редактировать: print_r ($ reviews) Вывод:

Array ( [0] => stdClass Object ( [rating_img_url_small] => http://media4.px.yelpcdn.com/static/201012164278297776/img/ico/stars/stars_small_2.png [user_photo_url_small] => http://media2.px.yelpcdn.com/static/201012162819681786/img/gfx/blank_user_extra_small.gif [rating_img_url] => http://media4.px.yelpcdn.com/static/201012163489049252/img/ico/stars/stars_2.png [rating] => 2 [user_url] => http://www.yelp.com/user_details?userid=vZbcPrYPSMFIDIfTub5H1g [url] => http://www.yelp.com/biz/jelly-cafe-denver#hrid:u9ckRV6tKApe6Bu93M93CA [mobile_uri] => http://m.yelp.com/biz/5G2X2q9p7QFdm-LbyutltQ?srid=u9ckRV6tKApe6Bu93M93CA [text_excerpt] => I wanted to like this place. It's got the contemporary name and it's full of hipsters. The place looked clean and the style was fun and cute. I felt like... [user_photo_url] => http://media3.px.yelpcdn.com/static/201012161186834854/img/gfx/blank_user_small.gif [date] => 2011-09-07 [user_name] => boycott p. [id] => u9ckRV6tKApe6Bu93M93CA ) [1] => stdClass Object ( [rating_img_url_small] => http://media4.px.yelpcdn.com/static/201012164278297776/img/ico/stars/stars_small_2.png [user_photo_url_small] => http://media1.px.yelpcdn.com/upthumb/MWu84G5QtmBmT9GoqjT_kg/ss [rating_img_url] => http://media4.px.yelpcdn.com/static/201012163489049252/img/ico/stars/stars_2.png [rating] => 2 [user_url] => http://www.yelp.com/user_details?userid=izF2cGrmqt-u_Z2tDZ8dbg [url] => http://www.yelp.com/biz/jelly-cafe-denver#hrid:OYLeeCMgnpZkk1c9LWu97g [mobile_uri] => http://m.yelp.com/biz/5G2X2q9p7QFdm-LbyutltQ?srid=OYLeeCMgnpZkk1c9LWu97g [text_excerpt] => Food is decent and overpriced, but service is a joke. Your food will take a minimum of 20 minutes, for the basic breakfast. Then when your food does come... [user_photo_url] => http://media1.px.yelpcdn.com/upthumb/MWu84G5QtmBmT9GoqjT_kg/ms [date] => 2011-09-06 [user_name] => April H. [id] => OYLeeCMgnpZkk1c9LWu97g ) [2] => stdClass Object ( [rating_img_url_small] => http://media2.px.yelpcdn.com/static/20101216418129184/img/ico/stars/stars_small_4.png [user_photo_url_small] => http://media1.px.yelpcdn.com/upthumb/3euzdGdLZRFxImY68MSg7w/ss [rating_img_url] => http://media2.px.yelpcdn.com/static/201012164084228337/img/ico/stars/stars_4.png [rating] => 4 [user_url] => http://www.yelp.com/user_details?userid=bHR9UU4vtx2QKZD44O0E5g [url] => http://www.yelp.com/biz/jelly-cafe-denver#hrid:njvNAzfSII3PxXyUymLZ1w [mobile_uri] => http://m.yelp.com/biz/5G2X2q9p7QFdm-LbyutltQ?srid=njvNAzfSII3PxXyUymLZ1w [text_excerpt] => Stopped here for breakfast on a friday morning. We were seated immediately and had a really friendly waitress. I ordered a side order of the Chai french... [user_photo_url] => http://media1.px.yelpcdn.com/upthumb/3euzdGdLZRFxImY68MSg7w/ms [date] => 2011-09-05 [user_name] => Diane F. [id] => njvNAzfSII3PxXyUymLZ1w ) ) 

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

На основе вывода print_r вы не можете ссылаться на $ reviews ['user_name'];

Обратите внимание, что $ reviews - это массив объектов.Поэтому для доступа к user_name вам нужно использовать

echo $reviews[0]->user_name;

И если у вас есть более одного элемента в массиве, вам понадобится цикл вроде

for ($i = 0; $i<count($reviews); $i++) {
    echo $reviews[$i]->user_name;
}

Надеюсь, это поможет.

1 голос
/ 09 сентября 2011

$reviews - массив объектов обзора.Вам нужно будет зациклить его, чтобы получить данные, которые вы ищете.

...