1

我目前正在从 Yahoo Weather 检索数据,并且能够显示到目前为止我需要的元素。我不知道如何使用条件代码(我认为我需要将数字转换为整数)来拥有一个字符串,以便我可以显示我自己的自定义图标。由于我正在跟踪的地区的天气相当温和,我只想分配少量图标,但每个图标都包含一串条件代码。到目前为止,这是我正在运行的代码——</p>

函数 bm_getWeather ($code = '', $temp = 'c') {

$file = 'http://weather.yahooapis.com/forecastrss?w=' . $code . '&u=' . $temp;

$request = new WP_Http;
$result = $request->request($file);

if (isset($result->errors)) {
    return FALSE;
}

$data = $result['body'];

$output = array (
    'temperature' => bm_getWeatherProperties('temp', $data),
    'weather_code' => bm_getWeatherProperties('code', $data),
    'class' =>  bm_getWeatherProperties('code', $data),
    'weather' => bm_getWeatherProperties('text', $data),        
);

return $output;

}

功能天气图标(){

$data = bm_getWeather($code = '', $temp = 'c');

// Error is here
$nums = (int)$data['weather_code']; // Needs to be cast as an integer

$severe = array(12, 13, 14, 16, 19);
$rain = array(3200);

// Therefore the maths is wrong
switch($nums) {
    case (in_array($nums, $severe)):
        $cat = 'severe';
    break;
    case (in_array($nums,$rain)):
        $cat = 'snow';
    break;
    default:
        $cat = 'happy';
    break;

}
return $cat;

}

函数 bm_getWeatherProperties ($needle, $data) {

$regex = '<yweather:condition.*' . $needle . '="(.*?)".*/>';
preg_match($regex, $data, $matches);

return (string)$matches[1];

}

任何帮助将不胜感激,因为我的 php 技能现在还不够。

4

0 回答 0