На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS

Дорогие друзья! Поздравляем вас с Новым 2018 годом!

Всем удачи, успеха и благополучия!
В новом году ожидаем новых рекордов при подсчёте количества ёлочек на экране ;)


msm.ru
Модераторы: juice
  
> Переделать погодный информер с php в C#
    Всем привет!

    Ребят есть классный погодный информер, который дергает апи вундерграунда.... только он на php, помогите переделать в c#, в phpвообще не понимаю что там.

    ExpandedWrap disabled
      <?php
      $ip = $_SERVER['REMOTE_ADDR'];
      $url = 'http://api.sypexgeo.net/xml/'. $ip .'';
      $xml = simplexml_load_string(file_get_contents($url));
      $loc_array = array($xml->ip->city->lat,$xml->ip->city->lon);
      $loc_safe = array();
      foreach($loc_array as $loc){
          $loc_safe[] = urlencode($loc);
      }
      $loc_string=implode(',', $loc_safe);
      $json = file_get_contents('http://api.wunderground.com/api/xxxkey/satellite/webcams/forecast/q/' . $loc_string . '.json');
      $json = str_replace('Monday', 'Понедельник', $json);
      $json = str_replace('Tuesday', 'Вторник', $json);
      $json = str_replace('Wednesday', 'Среда', $json);
      $json = str_replace('Thursday', 'Четверг', $json);
      $json = str_replace('Friday', 'Пятница', $json);
      $json = str_replace('Saturday', 'Суббота', $json);
      $json = str_replace('Sunday', 'Воскресенье', $json);
       
      $obj = json_decode($json, true);
       
      ?>
       
       
       
      <?
       
      $html .= "</h2><table cellpadding=4 cellspacing=3><tr>";
       
          foreach ($obj['forecast']['simpleforecast']['forecastday'] as $arr) {
       
              $html .= "<td align='center'>" . $arr['date']['weekday'] . "<br />";
              $html .= "<img src='http://icons-pe.wxug.com/i/c/k/" . $arr['icon'] . ".gif' border=0 /><br />";
              $html .= "<font color='red'>" . $arr['high']['celsius'] . '°C' . " </font>";
              $html .= "<font color='blue'>" . $arr['low']['celsius'] . '°C' . "</font>";
              $html .= "</td>";
       
       
          }
          $html .= "</tr></table>";
       
      echo $html;
      ?>
      Цитата FreeWayy @
      помогите переделать в c#, в phpвообще не понимаю что там.
      А что именно не получается?
      無駄に 5 分
        Цитата simsergey @
        Цитата FreeWayy @
        помогите переделать в c#, в phpвообще не понимаю что там.
        А что именно не получается?

        намек понял, сам такой ;-)

        Вот этот массив

        ExpandedWrap disabled
          $loc_array = array($xml->ip->city->lat,$xml->ip->city->lon);


        что это за конструкция -> ?

        Добавлено
        Цитата FreeWayy @
        Цитата simsergey @
        Цитата FreeWayy @
        помогите переделать в c#, в phpвообще не понимаю что там.
        А что именно не получается?

        намек понял, сам такой ;-)

        Вот этот массив

        ExpandedWrap disabled
          $loc_array = array($xml->ip->city->lat,$xml->ip->city->lon);


        что это за конструкция -> ?

        и этот перебор:

        ExpandedWrap disabled
           foreach ($obj['forecast']['simpleforecast']['forecastday'] as $arr) {

        в рейзоре это будет в круглых скобках? Не понятно что делается выше и как это повторить на райзоре
          Цитата FreeWayy @
          намек понял, сам такой ;-)
          :D

          Это фрагмент твоего XML, который получает скрипт:
          ExpandedWrap disabled
            <sxgeo>
                <ip num="82.145.221.127" request="-1" error="" created="2016.12.11" timestamp="1481488752">
                    <city>
                        <id>3413829</id>
                        <lat>64.13548</lat>
                        <lon>-21.89541</lon>
                        <name_ru>Рейкьявик</name_ru>
                        <name_en>Reykjavik</name_en>
                        <name_de>Reykjavík</name_de>
                        <name_fr>Reykjavik</name_fr>
                        <name_it>Reykjavík</name_it>
                        <name_es>Reikiavik</name_es>
                        <name_pt>Reiquiavique</name_pt>
                        <okato/>
                        <vk>0</vk>
                        <population>118918</population>
                    </city>


          Функции PHP для работы с массивами
          Функция Array
          Цитата FreeWayy @
          что это за конструкция -> ?
          Это автор проходит по ветке в XML файлике.
          Функция Array создает массив из двух значений 64.13548 и -21.89541.

          Дальше он подставляет значения ширины и долготы и забирает файлик .json.
          Разбирает его, потом перебирает весь массив, лежащий в ['forecast']['simpleforecast']['forecastday'].
          Т.е. после разбора получается массив $obj, который содержит весь этот json, но с ключами не цифровыми а буквенными.
          Массив этот многомерный.

          Т.е. $obj - массив, в котором есть массив 'forecast', содержащий массив 'simpleforecast', который в свою очередь содержит 'forecastday'.
          'forecastday' содержит несколько одинаковых по ключам массивов, эти массивы от начала и до конца перебирает foreach, представляя каждый из них как $arr за одну итерацию, выбирает по ключам в $arr значения, подставляет в html, формирует один элемент, второй элемент и т.д.. пока не переберёт весь 'forecastday'.

          С шарпом не работал, как это там представить не подскажу.
          無駄に 5 分
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script Execution time: 0,1028 ]   [ 18 queries used ]   [ Generated: 22.01.18, 22:00 GMT ]