View difference between Paste ID: QZukjQ82 and 5EzabvPF
SHOW: | | - or go back to the newest paste.
1
<?php
2
// парсер изображений и описания состояний
3
$col = 1; // кол-во дней (до 10, увеличивается время выдачи)
4
$data_file = 'http://weather.yandex.ru/static/cities.xml';
5
$xml = simplexml_load_file($data_file);
6
7
foreach ($xml->country as $key => $value) {
8
    foreach ($value->city as $key1 => $value1):
9
        $out = getWeather($value1["id"], $col);
10
        foreach ($out as $day):
11
            foreach ($day['weather'] as $weather):
12
                $types[(string)$weather['weather_type']] = (string)$weather['image'];  // массив описаний состояния с изображением
13
                $images[(string)$weather['image']] = (string)$weather['weather_type']; // массив изображений с описанием состояния
14
            endforeach;
15
        endforeach;
16
    endforeach;
17
}
18
foreach($types as $type=>$img):
19-
    ?><img src="http://yandex.st/weather/1.2.61/i/icons/48x48/" width="48" height="48" /> - <?php echo $type.'<br />';
19+
    ?><img src="http://yandex.st/weather/1.2.61/i/icons/48x48/<?php echo $img;?>.png" width="48" height="48" /> - <?php echo $type.'<br />';
20
endforeach;
21
echo '<br><hr><br>';
22
foreach($images as $img=>$type):
23-
    ?><img src="http://yandex.st/weather/1.2.61/i/icons/48x48/" width="48" height="48" /> - <?php echo $type.'<br />';
23+
    ?><img src="http://yandex.st/weather/1.2.61/i/icons/48x48/<?php echo $img;?>.png" width="48" height="48" /> - <?php echo $type.'<br />';
24
endforeach;
25
/*
26
заполняем массив при помощи функции, первый параметр идентификатор города, другие параметры необязательны - в этом случае используется значения по умолчанию
27
*/
28
function getWeather($city, $col = 10) {
29
    $data_file = 'http://export.yandex.ru/weather-ng/forecasts/'.$city.'.xml';   // загружаем файл прогноза погоды для выбранного города
30
    $xml = simplexml_load_file($data_file); // загружаем xml файл через simple_xml
31
32
    $out = array(); // массив вывода прогноза
33
    $counter = 0 ; // счетчик количества дней, для которых доступен прогноз
34
35
    if($xml->day):
36
        foreach($xml->day as $day):
37
38
            if($counter == $col) break;
39
            for ($i=0;$i<=3;$i++) {
40
                $out[$counter]['weather'][$i]['image'] = $day->day_part[$i]->{'image-v3'};
41
                $out[$counter]['weather'][$i]['weather_type'] = $day->day_part[$i]->weather_type;
42
            }
43
            $counter++ ;
44
        endforeach;
45
    endif;
46
    return $out ;
47
}
48
?>