Funktion liefert nichts zurück
Markus
- php
Hi,
ich hab folgenden Code:
<?php
$eng = $_GET["engine"];
$engines = array(
"google" => "http://www.google.de/search?hl=de&q=$q&lr=lang_de",
"msn" => "http://search.msn.de/results.aspx?q=$q&mkt=de-DE&lf=1",
"yahoo" => "http://de.search.yahoo.com/search?p=$q&meta=vl%3D",
"webde" => "http://suche.web.de/search/web/?su=$q&su1=$q&webRb=de");
function angeklickt($engine_name)
{
return $engines[$engine_name];
}
?>
Wenn ich dann die Funktion so aufrufe:
<?php die (angeklickt($eng)); ?>
wird nichts ausgegeben. Wenn ich anstatt $eng zb. "msn" schreibe funktioniert es auch nicht.
Wenn ich allerdings einfach
<?php die ($engines[$eng]); ?>
schreibe gibt er mit die URL aus.
Wo liegt da das Problem ?
hi,
function angeklickt($engine_name)
{
return $engines[$engine_name];
}
In dieser Funktion ist überhaupt keine Variable $engines definiert.
Stelle dein error_reporting auf E_ALL, damit PHP dir solche Fehler gleich selbst mitteilt, und beschäftige dich mit dem Geltungsbereich von Variablen.
gruß,
wahsaga
Hallo
<?php
$eng = $_GET["engine"];
$engines = array(
"google" => "http://www.google.de/search?hl=de&q=$q&lr=lang_de",
"msn" => "http://search.msn.de/results.aspx?q=$q&mkt=de-DE&lf=1",
"yahoo" => "http://de.search.yahoo.com/search?p=$q&meta=vl%3D",
"webde" => "http://suche.web.de/search/web/?su=$q&su1=$q&webRb=de");function angeklickt($engine_name)
{
return $engines[$engine_name];
}
?>Wenn ich dann die Funktion so aufrufe:
<?php die (angeklickt($eng)); ?>
wird nichts ausgegeben. Wenn ich anstatt $eng zb. "msn" schreibe funktioniert es auch nicht.Wenn ich allerdings einfach
<?php die ($engines[$eng]); ?>
schreibe gibt er mit die URL aus.
Wenn du die (angeklickt($eng));
ausführst, fehlt der Funktion die Kenntnis vom Array $engines
. Eine funktion hat einen eigenen Namensraum. Das heißt, dass es eine Variable, z.B. $name sowohl außerhalb als auch innerhalb der Funktion geben könnte, ohne dass diese in Konflikt mit einander geraten. Willst du eine Variable von außerhalb in der Funktion verwenden, musst du diese der Funktion bekannt geben.
Entweder du bindest sie per global $engines;
in die Funktion ein, oder du übergibst sie der Funktion als Parameter (angeklickt($engines,$eng)
). In diesem Fall würde ich es per global machen.
Tschö, Auge
Wenn du
die (angeklickt($eng));
ausführst, fehlt der Funktion die Kenntnis vom Array$engines
. Eine funktion hat einen eigenen Namensraum. Das heißt, dass es eine Variable, z.B. $name sowohl außerhalb als auch innerhalb der Funktion geben könnte, ohne dass diese in Konflikt mit einander geraten. Willst du eine Variable von außerhalb in der Funktion verwenden, musst du diese der Funktion bekannt geben.Entweder du bindest sie per
global $engines;
in die Funktion ein, oder du übergibst sie der Funktion als Parameter (angeklickt($engines,$eng)
). In diesem Fall würde ich es per global machen.Tschö, Auge
Danke!
ich hab in PHP noch nie wirklich mit Funktionen gearbeitet und wusste es deswegen nicht.