Hallo Brotfische,
ich habe ein API-Script geschrieben das funktioniert wenn man die API einmal aufruft.
Ich möchte jedoch das ich die API in einer For-Schleife mehrfach aufrufen möchte mit den angeforderten Daten. Ich habe schon einiges versucht
wie z.b. die Connections eine eindeeutige ID zuzuweisen. Jedoch funktioniert das auch nicht.
PHP: API.php
<?php
class API
{
private $api = 'http://privatedomain.de/data/2.5/go',
$appid = 'e31e7d4ddecb145d369aazzuih811d71c3';
public $connect;
public $lat,,
$lon;
public $dump = array();
function __construct()
{
$this->connect = $this->api.'?lat=[LAT&lon=[LON]&appid='.$this->appid.'&units=metric&radius=2';
}
function connects($lat, $lon)
{
$this->connect = str_replace('[LAT]', $lat, $this->connect);
$this->connect = str_replace('[LON]', $lon, $this->connect);
$json = @file_get_contents($this->connect);
return json_decode($json);
}
public function beginConnect($lat, $lng)
{
$this->lat = $lat;
$this->lon = $lon;
$this->dump = $lat.' - '.$lon.' API: '.$this->connect[$this->l]; //Dump ist nur zum Testen. Jedoch wenn es nach Dump gehen würde würde es gehen
}
//Daten
public function Daten()
{
$t = $this->connects($this->lat, $this->lon);
return isset($t->main->temp) ? ceil($t->main->temp): 'false';
}
Alles anzeigen
und API->Daten() liest die Daten aus, die ich brauche.
Wie bereits oben gesat brauche ich immer die entsprechenden Daten in einer For-Schleife.
Code: auslesen.php
$Weather = Weather;
for($x=1;$x<$db2->counts();$x++) {
$id = $db2->results()[$x]->id;
$Weather->beginConnect($db2->results()[$x]->lat, $db2->results()[$x]->lon);
echo 'TEMP: '.$Weather->Daten().'<br />';
var_dump($Weather->dump).'<hr />';
Und die Ausgabe ist:
Code
http://privatedomain.de/data/2.5/go?lat=[LAT]&lon=[LNG]&appid=e31e7d4ddecb145d369aa874811d71c3&units=metric&radius=2
TEMP: 19
string(150) "52.7764 - 9.21752 API: http://privatedomain.de/data/2.5/go?lat=[LAT]&lon=[LNG]&appid=e31e7d4ddecb145d369aa874811d71c3&units=metric&radius=2" http://privatedomain.de/data/2.5/go?lat=52.7764&lon=[LNG]&appid=e31e7d4ddecb145d369aa874811d71c3&units=metric&radius=2
TEMP: 19
string(144) "54 - 13.7 API: http://privatedomain.de/data/2.5/go?lat=52.7764&lon=[LNG]&appid=e31e7d4ddecb145d369aa874811d71c3&units=metric&radius=2" http://privatedomain.de/data/2.5/go?lat=52.7764&lon=[LNG]&appid=e31e7d4ddecb145d369aa874811d71c3&units=metric&radius=2
TEMP: 19
Und TEMP ist das was ausgegeben wird. Aber er Liest nur den ersten Datensatz aus und das wiederholt sich in der For-Schleife. Aber jeder Datensatz in der Schleife sollte ausgelesen werden.
Hat jemand Ideen?
Liebe Grüße
palwal