[EDIT: Entschuldigung für die frühere schlecht formulierte Frage. . Insgesamt Rewrite]Wiederverwenden einer PHP-Variable aus einer Funktion über Dateien
Ich habe eine Wordpress-Website und ich bin auf der Suche nach 3 relevanten Dateien:
- functions.php
- header.php
- index.php (einschließlich header.php)
ich ziehe Wetterdaten von einem externen Feed mit einer Funktion in der functions.php und dann versuchen, diese Daten an zwei Stellen angezeigt werden - einmal in header.php (auf jeder Seite der Website) und einmal in index.php (eine zweite Inst nur auf der Startseite angezeigt). Ich kann die erste Instanz angezeigt werden, aber ich habe Probleme mit der zweiten Instanz
In functions.php:
function arctic_valley_weather() {
function get_string_between($string, $start, $end){
//here's a function that just parses the data. not important
}
$fullstring = file_get_contents('http://www.cnfaic.org/library/grabbers/nws_feed.php');
$parsed = get_string_between($fullstring, 'arctic_valley,', 'marmot,');
$weatherValues = explode(",",$parsed);
$dateTime = date_create($weatherValues[0]);
return array(
'dateTime' => $dateTime,
'airTemp' => $weatherValues[1],
'relHumid' => $weatherValues[2],
'windSpeed' => $weatherValues[3],
'windDirection' => $weatherValues[4],
'windGust' => $weatherValues[5],
);
}
Okay, dann in header.php:
$weatherData = arctic_valley_weather();
echo round($weatherData['airTemp']);
Dies zeigt genau die Temperatur (gerundet). Sagen wir "18". Genial.
Ärger kommt in index.php, wenn ich will nur, dass genau das gleiche Ergebnis duplizieren:
echo round($weatherData['airTemp']);
Dieses falsch „0“ zeigt, obwohl die anfängliche Instanz korrekt angezeigt wird 18.
Ich denke, das sind alle relevanten Daten. Irgendwas herausspringen?
Versuchen Sie, eine [MVCE] (https://stackoverflow.com/help/mcve) oder einen Codeabschnitt zu erstellen, der genau das Problem darstellt, das Sie haben Ving. Versuchen Sie, Ihren Code so weit wie möglich zu reduzieren, und posten Sie ihn erneut zusammen mit Ihrer Site-Struktur (welche Datei enthält was). So wie es steht, kann niemand sagen, was falsch ist. Könnte viele Dinge sein. –
Eine Sache, die ich sagen kann ist, dass Ihre Funktion überhaupt nicht funktionieren sollte, es sei denn Teile davon wurden entfernt. '$ weatherValues' ist nirgendwo definiert und die Funktion könnte es nicht verwenden, wenn es außerhalb der Funktion definiert wäre. Sie müssten das Schlüsselwort 'global' verwenden, um es zu verwenden. Und wenn sie global sind, ist es möglich, dass etwas modifiziert wird, bevor es zum zweiten Funktionsaufruf kommt. –
Danke - Sie haben Recht. Das war nicht sehr gut. Ich habe die Frage umgeschrieben, um klarer zu sein. (Es war mehr an der Funktion, etc). Ich bin mir nicht sicher, ob ich noch etwas verlasse, aber das glaube ich nicht. – Lime