Was stimmt an meiner Funktion nicht?
Laire
- php
0 wahsaga0 King^Lully
function ersetzen($para1)
{
str_replace(array("ä", "ö", "ü", "ß", "Ä", "Ö", "Ü", """, "<", ">",), array("ä", "ö", "ü", "ß", "Ä", "Ö", "Ü", """, "<", ">"), $para1);
}
$ueber = ersetzen($row[topic]);
echo $ueber;
Bekomme keine Ausgabe, aber auch keine Fehlermeldung. $row[topic] hat Inhalt
hi,
function ersetzen($para1)
{
str_replace(array("ä", "ö", "ü", "ß", "Ä", "Ö", "Ü", """, "<", ">",), array("ä", "ö", "ü", "ß", "Ä", "Ö", "Ü", """, "<", ">"), $para1);
}$ueber = ersetzen($row[topic]);
echo $ueber;Bekomme keine Ausgabe
Woher auch?
Deine Funktion gibt nichts zurück.
Dieses Nichts legst du in einer Variablen ab, gibst dieses in einer Variablen abgelegte Nichts dann aus - und wunderst dich, dass es Nichts ist ...?
gruß,
wahsaga
Grundlage für Zitat #653.
Woher auch?
Deine Funktion gibt nichts zurück.
Oder (statt Funktionsrückgabewerte) man übregibt der Funktion die Daten als Referenz, dann muss nichts zurückgegeben werden:
http://de3.php.net/manual/de/functions.arguments.php
Woher auch?
Deine Funktion gibt nichts zurück.Oder (statt Funktionsrückgabewerte) man übregibt der Funktion die Daten als Referenz, dann muss nichts zurückgegeben werden:
http://de3.php.net/manual/de/functions.arguments.php
Worin liegen da eigentlich die Vor- bzw. Nachteile?
echo $begrüßung;
[Referenzen]
Worin liegen da eigentlich die Vor- bzw. Nachteile?
Meinst du jetzt in diesem speziellen Fall? Es gibt keine wirklichen Vorteile, hier eine Referenz zu verwenden.
Allgemein sieht es so aus: Normalerweise werden einer Funktion die Parameterwerte als Kopie übergeben. Es gibt aber Fälle, da will man auf das Original zugreifen, z.B. weil es geändert werden soll, oder weil eine Kopie zu viel Platz verbraucht. Doch das Verwenden einer Referenz will gut überlegt sein. Es ist schneller, eine Zahl Bytes zu kopieren, als eine Referenz anzulegen, die auch noch extra verwaltet werden muss. PHP muss sich merken, ob auf einen bestimmten Wert noch irgendwelche Referenzen verweisen, denn das Entfernen der Wertes bei noch existierenden Referenzen hätte unangenehme Folgen.
Eine Sonderstellung nehmen Objekte ein. Unter PHP 4 werden diese wie alle anderen Werte als Kopie übergeben, unter PHP5 hingegen als Referenz.
Das PHP-Handbuch empfiehlt, Referenzen nur bei zwingenden technischen Gründen zu verwenden. Für Wald- und Wiesen-Scripte bringen sie im Allgemeinen keine Vorteile.
echo "$verabschiedung $name";
Moin!
[Referenzen]
Worin liegen da eigentlich die Vor- bzw. Nachteile?Meinst du jetzt in diesem speziellen Fall? Es gibt keine wirklichen Vorteile, hier eine Referenz zu verwenden.
Der einzige wirklich gravierende Nachteil ist dieser: Die Verwendung eines Parameters als Referenz erzwingt, dass beim Funktionsaufruf an dieser Stelle eine Variable genutzt wird.
Die hier fragliche Funktion ersetzen() soll Stringoperationen durchführen und das Ergebnis zurückgeben. Es wäre weitaus umständlicher, jeden konstanten String vorher erst in einer Variablen abzulegen und hinterher diese Variable auszugeben.
echo ersetzen("Hallo Welt");
# gegenüber
$var = "Hallo Welt";
ersetzen($var);
echo $var;
Diese widersinnige Anwendung einer Referenz sollte also tunlichst unterbleiben. So programmiert man nur, wenn man an irgendeinem Obfuscation-Contest teilnimmt.
- Sven Rautenberg
echo $begrüßung;
Allgemein sieht es so aus: Normalerweise werden einer Funktion die Parameterwerte als Kopie übergeben. Es gibt aber Fälle, da will man auf das Original zugreifen, z.B. weil es geändert werden soll, oder weil eine Kopie zu viel Platz verbraucht. Doch das Verwenden einer Referenz will gut überlegt sein. Es ist schneller, eine Zahl Bytes zu kopieren, als eine Referenz anzulegen, die auch noch extra verwaltet werden muss.
Hinzu kommt noch, dass PHP intern eine Kopie nur dann erstellt, wenn die Werte zweier Variablen unterschiedlich werden. Wenn du also $a = 42; hast und $b = $a; notierst, zeigt $b PHP-intern auf $a. Erst wenn entweder $a oder $b einen anderen Wert bekommt, wird eine wirkliche Kopie erstellt.
echo "$verabschiedung $name";
echo $begrüßung;
Deine Funktion gibt nichts zurück.
Oder (statt Funktionsrückgabewerte) man übregibt der Funktion die Daten als Referenz, dann muss nichts zurückgegeben werden:
http://de3.php.net/manual/de/functions.arguments.php
Referenzen sollte man unter PHP nur verwenden, wenn man einen zwingenden technischen Grund dazu hat, und der ist hier nicht gegeben. Außerdem nützt die Referenz allein nichts, da str_replace() keine Änderung im ihr übergebenen String vornimmt, sondern den geänderten String als Ergebnis zurückgibt. Das wird am Ende unübersichtlicher, als einfach das vergessene return vor str_replace() zu setzen.
(Außerdem ist es im Allgmeinen nicht notwendig, das Verhalten von htmlspecialchars() und/oder htmlentities() nachzubauen.)
echo "$verabschiedung $name";
Referenzen sollte man unter PHP nur verwenden, wenn man einen zwingenden technischen Grund dazu hat, und der ist hier nicht gegeben.
Referenzen haben doch die hier so geschätzten
_PERFORMANCEVORTEILE_
.