Не отображает результат разбора - PullRequest
0 голосов
/ 27 июня 2019

Добрый день, пожалуйста, помогите мне. У меня при разборе результат разбора не отображается.

ссылка на мой php файл https://dropmefiles.com/cv4Q2

Пожалуйста, исправьте, где я был неправ Или помогите переписать небольшой код, чтобы он отображал результат парсера. Уже все варианты перепробовал, никак не работает. Моих знаний здесь недостаточно.

1 файл часть 1

    function getForecastXML($cid='579432') {
        $cid = "579432";
        $hoffset = "4";
        $appid= "d86ad74d22ce9cc528d8baee65acd408";
        $lang= "ru";
        $days = array();
        $xml = @file_get_contents("http://api.openweathermap.org/data/2.5/forecast?id=$cid&mode=xml&appid=$appid&lang=$lang&type=like");
        if ($xml===false) { return;} else {
        $xml = simplexml_load_string($xml);
        $cityname = (string)$xml->location->name;
        $weekdays[0] = "Воскресенье";
        $weekdays[1] = "Понедельник";
        $weekdays[2] = "Вторник";
        $weekdays[3] = "Среда";
        $weekdays[4] = "Четверг";
        $weekdays[5] = "Пятница";
        $weekdays[6] = "Суббота";   

        if (count($xml->forecast->time)>0){
        foreach ($xml->forecast->time as $fpart) {
            $forecast = array();
            $attr = $fpart->attributes();
            $forecast['t']['min'] = (string)round(($fpart->temperature->attributes()->min)-273,15,PHP_ROUND_HALF_UP);
            $forecast['t']['min'] = $forecast['t']['min'] > 0 ? "+".$forecast['t']['min'] : $forecast['t']['min'];
            $forecast['t']['max'] = (string)round(($fpart->temperature->attributes()->max)-273,15,PHP_ROUND_HALF_UP);
            $forecast['t']['max'] = $forecast['t']['max'] > 0 ? "+".$forecast['t']['max'] : $forecast['t']['max'];
            $forecast['p']['min'] = (string)round($fpart->pressure->attributes()->value,0,PHP_ROUND_HALF_UP);
           // $forecast['p']['max'] = (string)$fpart->PRESSURE->attributes()->max;
            $forecast['w']['min'] = (string)round($fpart->windSpeed->attributes()->mps,0,PHP_ROUND_HALF_UP);
            //$forecast['w']['max'] = (string)$fpart->WIND->attributes()->max;
            //$forecast['w']['rumb'] = (string)$fpart->WIND->attributes()->direction;
            $forecast['h']['min'] = (string)$fpart->humidity->attributes()->value;
            //$forecast['h']['max'] = (string)$fpart->RELWET->attributes()->max;
            $forecast['symb'] = (string)$fpart->symbol->attributes()->name;
            $forecast['pict'] = (string)$fpart->symbol->attributes()->var;
            $date = date('c',strtotime($hoffset.' hours',strtotime($attr['from'])));
            $hour = date('H',strtotime($date));
            $forecast['timestamp'] =strtotime($date);
            $date = strtotime($date);
            $dayofweek = date('w',$date);
            $date = $weekdays[$dayofweek]." ".date('d.m',$date);
            if ($forecast['timestamp'] > time()){
                $days[$date][$hour] = $forecast;
            }

        }
        } else {$days=array();}

}

        //return array($cityname,$days);
        return [$cityname => $days];
        //echo [$cityname => $days];

}

часть 2

$outputData = array();
if (count($this->forecast) > 0) {
  foreach ($this->forecast as $date => $daypart) {
    $outputData[] = $date;
    foreach ($daypart as $dp => $data) {
      $outputData[] = str_pad($dp, 2, '0', STR_PAD_LEFT);
      $outputData[] = $data['symb'];
      $outputData[] = $data['t']['min'];
      $outputData[] = $data['t']['max'];

      if (($data['p']['min']) > 0) {
        $outputData[] = "Давление " . round($data['p']['min'] * 0.75006375541921) . "мм. рт. ст.";
      }

    }
  }
} else {
  $outputData[] = "В данный момент информация о погоде отсутствует";
}

echo implode(' ', $outputData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...