2011-09-09 6 views
0

위로 나를 위로하게 : 저는 PHP 해킹입니다. 아마 어리석은 실수가있을거야. 당신이 그들을 보게되면 그들을 지적하십시오.PHP를 통해 Yelp API에서 값을 추출하는 데 문제가 발생했습니다.

내가하려는 일 : 나는 옐프 리뷰가 표시되는 레스토랑 페이지를 만들고 있습니다. 특정 비즈니스에 대한 리뷰를 얻기 위해 Yelp Phone API를 사용하고 있습니다. 여기에있는 옐프 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']; 
} 

가, 난 그냥 단어 "배열"을 얻는다. print_r ($ reviews)이라면 예상되는 키와 값 목록을 얻습니다. 배열에서 특정 값을 반향 시키려고하면 (echo $ [[user_name ']) 아무 것도 얻을 수 없습니다. 내가 잘못하고있는 부분에 대한 모든 표시가 크게 도움이 될 것입니다. . 시간 내 주셔서 감사

편집 :! 인 print_r ($ 리뷰) 출력 :.

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)) 
+0

누군가가 왜 투표를 거절했는지 확실하지 않습니다. 그것은 유효한 질문 인 것 같습니다. print_r 명령의 출력을 게시 할 수 있습니까? 해당 배열에 'user_name'키가 있습니까? – jdias

+0

물론입니다. 메인 게시물에 print_r 출력을 추가합니다. –

답변

1

print_r의 출력에 따르면 $ reviews [ 'user_name'];

을 참조 할 수 없습니다.

$ reviews는 개체의 배열입니다. 그래서 _ 이름에 액세스 할 수는

echo $reviews[0]->user_name; 

를 사용할 필요가 그리고 당신은 배열에 하나 개 이상의 항목이있는 경우, 당신은 내가 희망이 도움이

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

같은 루프가 필요합니다.

+0

와우 덕분에 엄청난 도움이되었습니다. 고맙습니다. –

1

$reviews 검토 객체의 배열을 당신은 데이터를 얻기 위해 그 위에 루프해야합니다 당신은 끝났어.

+0

내 초록색에 사과드립니다.하지만이 말은 내가 루프를 중첩하거나 별도의 루프를 만들어야한다는 뜻입니까? –

+0

비즈니스를위한 루프 내에서 리뷰를 보려면 루프를 만들어야합니다. –

+0

올바른 방향으로 나를 가르쳐 주셔서 감사합니다. 매우 감사. –