【问题标题】:Retrieving data poin from API response从 API 响应中检索数据点
【发布时间】:2017-09-06 21:23:46
【问题描述】:

我拼凑了一些 PHP 代码,允许我从 Yelp API v.3 获取业务数据

$postData = "grant_type=client_credentials&".
    "client_id=MyClientIDl94gqHAg&".
    "client_secret=SomEcoDehIW09e6BGuBi4NlJ43HnnHl4S7W5eoXUkB";


// GET TOKEN
$curl = curl_init();

//set the url
curl_setopt($curl,CURLOPT_URL, "https://api.yelp.com/oauth2/token");
//tell curl we are doing a post
curl_setopt($curl,CURLOPT_POST, TRUE);
//set post fields
curl_setopt($curl,CURLOPT_POSTFIELDS, $postData);
//tell curl we want the returned data
curl_setopt($curl,CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($curl);

if($result){
    $data = json_decode($result);
}

// GET RESTAURANT INFO
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.yelp.com/v3/businesses/north-india-restaurant-san-francisco",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
        "authorization: Bearer ".$data->access_token
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

//close connection
curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}

输出如下所示:

{“id”:“north-india-restaurant-san-francisco”,“name”:“北印度餐厅”,“image_url”:“https://s3-media2.fl.yelpcdn.com/bphoto/fIgAIMHGfWRF3I0JmagQ7A/o.jpg”,“is_claimed”:true,“is_closed”:假,“url”:“https://www.yelp.com/biz/north-india-restaurant-san-francisco?adjust_creative=qG_bVdazAjjAO1l94gqHAg&utm_campaign=yelp_api_v3&utm_medium=api_v3_business_lookup&utm_source=qG_bVdazAjjAO1l94gqHAg”,“电话”:“+14153481234”,“display_phone”:“(415)348-1234”,“review_count”:857,“类别”:[{“别名”: “indpak”,“title”:“Indian”}],“rating”:4.0,“location”:{“address1”:“123 Second St”,“address2”:“”,“address3”:“”,“城市”:“旧金山”,“邮政编码”:“94105”,“国家”:“美国”,“州”:“CA”,“display_address”:[“123 Second St”,“旧金山,CA 94105” ],“cross_streets”:“”},“坐标”:{“纬度”:37.787789124691,“经度”:-122.399305736113},“照片”:[“https://s3-media1.fl.yelpcdn.com/bphoto/howYvOKNPXU9A5KUahEXLA/o.jpg”,“https://s3-media2.fl.yelpcdn.com/bphoto/I-CX8nioj3_ybAAYmhZcYg/o.jpg”,“https://s3-media3.fl.yelpcdn.com/bphoto/uaSNfzJUiFDzMeSCwTcs-A/o.jpg "], "价格": "$$", "小时": [{"open": [{"is_overnight": false, "start": "1000", "end": "2300", "day": 0},{“is_overnight”:false,“start”:“1000”,“end”:“2300”,“day”:1},{“is_overnight”:false,“start”:“1000”,“end ": "2300", "day": 2}, {"is_overnight": false, "start": "1000", "end": "2300", "day": 3 },{“is_overnight”:假,“开始”:“1000”,“结束”:“0000”,“天”:4},{“is_overnight”:假,“开始”:“1000”,“结束” : "0000", "day": 5}, {"is_overnight": false, "start": "1000", "end": "2300", "day": 6}], "hours_type": "REGULAR" , "is_open_now": true}], "transactions": ["delivery", "pickup"]}

例如,我如何检索周五的营业时间?日期是 0 - 6,周一 - 周日。

【问题讨论】:

    标签: php


    【解决方案1】:

    您解析 json 数据并遍历条目:

    function getOpeningHoursForDay($data,$day){
        $open_hours = $data['hours'][0]['open'];
        $n = count($open_hours);
    
        for($i=0;$i<$n;$i++){
            if($open_hours[$i]['day']==$day) // check if day matches
                return $open_hours[$i];
        }
        return null; // no matching day found, return null
    }
    
    function formatOpeningHour($hour){
        return substr($hour,0,2).':'.substr($hour,2); // convert 2300 to 23:00
    }
    
    
    $data = json_decode($response,true);
    $friday_hours = getOpeningHoursForDay($data,4);
    if(isset($friday_hours)){
        echo 'opened ' . formatOpeningHour($friday_hours['start']) . ' - ' .formatOpeningHour($friday_hours['end']);
    }else{
        echo 'closed';
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-12
      • 2017-05-09
      • 2020-06-18
      • 2017-08-10
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多