| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

13-08-2005, 19:20
|
|
tomstig
Registrierter Benutzer
|
|
Registriert seit: Jul 2003
Ort: wr n
Beiträge: 878
|
|
[BELEHRUNG] - Richtiges Trennen von Strings und Variablen
Kurzes Beispiel:
PHP-Code:
$name = "Thomas";
// empfohlen
echo "Hallo, mein Name ist " . $name;
// fehleranfällig
echo "Hallo, mein Name ist $name";
// empfohlen
echo $name;
// sehr fehleranfällig, vor allem in Kombination mit '
echo "$name";
Das gleiche gilt für Arrays und globals:
PHP-Code:
$mein_array = array("name" => "Thomas", "wohnort" => "wrn");
//empfohlen
echo $mein_array["wohnort"];
//fehleranfällig
echo $mein_array[wohnort];
//das gleiche gilt auch für $_GET, $_POST, $_COOKIE
//empfohlen
echo $_GET["s"];
//fehleranfällig
echo $_GET[s];
Eine Ausnahme gibt es, wo es erlaubt ist, keine Anführungszeichen zu schreiben:
PHP-Code:
$mein_array = array("name" => "Thomas", "wohnort" => "wrn");
// Auf wohnort wird "name" gespeichert
define("wohnort", "name");
echo "Hallo " . $mein_array[wohnort]; // Hallo Thomas
echo "Hallo " . $mein_array["wohnort"]; // Hallo wrn
Weitere Informationen hier
Um noch den Unterschied zwischen ' und " zu erläutern:
PHP-Code:
// Man will in seinen Text [b]\n[/b] schreiben
echo 'In meinen Text möchte ich \n schreiben'; // funktioniert
echo "In meinen Text möchte ich \\\n schreiben"; // funktioniert
echo "In meinen Text möchte ich \n schreiben"; //funktioniert nicht
// das gleiche gilt für Variablen
// zu Testzwecken geb ich der Variable $name einen Wert
$name = 'Thomas'; // (bei einfacher Textzuweisung ist es egal, ob man ' oder " verwendet)
// man möchte jetzt einen Text schreiben, wo [b]$name[/b] vorkommt
echo 'Hallo $name'; // Hallo $name
echo "Hallo \$name"; // Hallo $name
echo "Hallo $name"; // Hallo Thomas (<- nicht empfehlenswert)
Geändert von tomstig (15-04-2006 um 19:09 Uhr)
|

13-08-2005, 19:49
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Re: [BELEHRUNG] - Richtiges Trennen von Strings und Variablen
Zitat:
PHP-Code:
// richtig
echo "Hallo, mein Name ist " . $name;
|
falsch
PHP-Code:
// richtig
echo 'Hallo, mein Name ist ' . $name;
Zitat:
PHP-Code:
$mein_array = array("name" => "Thomas", "wohnort" => "wrn");
//richtig
echo $mein_array["wohnort"];
|
falsch
PHP-Code:
// richtig
echo $mein_array['wohnort'];
Zitat:
PHP-Code:
//richtig
echo $_GET["s"];
|
und wieder falsch
PHP-Code:
echo $_GET['s'];
Wenn dann auch ganz richtig und nicht nur halb...
Abgesehen von einer Ausnahme, wenn man nämlich Whitespace-Zeichen einfügen will, also z.B: \n
dann MUSS man " nehmen, weil sie bei ' einfach ausgegeben werden:
PHP-Code:
echo "test\ntest"; // ergibt
/*
test
test
*/
echo 'test\ntest'; // ergibt
/*
test\ntest
*/
|

13-08-2005, 19:53
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
meine herren, die begriffe "richtig" und "falsch" sind zuweilen zu radikal.
statt "falsch" würde ich sagen - "fehleranfälliger" und für "richtig" - "empfehlenswerter" (und nur minimal performanter).
schreib lieber noch ein paar takte zu '$selten_richtig'.
Geändert von penizillin (13-08-2005 um 19:56 Uhr)
|

13-08-2005, 19:55
|
|
tomstig
Registrierter Benutzer
|
|
Registriert seit: Jul 2003
Ort: wr n
Beiträge: 878
|
|
Ob du ' oder " verwendest, ist egal, andererseits hätt ich gerne einen seriösen Gegenbeweis.
Ich nehme standardmässig ' also
PHP-Code:
$name = 'Thomas';
echo 'Hallo, mein Name ist ' . $name;
//arrays:
$mein_array = array('Name' => 'Thomas', 'Wohnort' => 'wrn');
echo $mein_array['name'];
insofern juckt mich deine Aussage wenig.
Ich wollte nur die Leute, die
schreiben, nicht mit dem Apostrophe überfordern.
|

13-08-2005, 19:55
|
|
tomstig
Registrierter Benutzer
|
|
Registriert seit: Jul 2003
Ort: wr n
Beiträge: 878
|
|
Zitat:
Original geschrieben von penizillin
meine herren, die begriffe "richtig" und "falsch" sind zuweilen zu radikal.
statt "falsch" würde ich sagen - "fehleranfälliger" und für "richtig" - "empfehlenswerter" (und nur minimal performanter).
|
ayay, wir geändert...
|

13-08-2005, 21:28
|
|
Hopka
PHP Expert
|
|
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.172
|
|
Zitat:
Original geschrieben von penizillin
(und nur minimal performanter).
|
falsch.
|

13-08-2005, 21:45
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Zitat:
Original geschrieben von Hopka
falsch.
|
richtig
weil PHP in " nach Variabeln sucht und in ' nicht
|

14-08-2005, 01:21
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
sag mal habt Ihr am WE alle nichts zu tun
egal ob " oder ' der Unterschied ist kaum merkbar. Wenn Ihr ' verwendet, aber einen Sch**ßalgorithmus im Programm habt dann nützt es Euch herzlich wenig. Also verlege mal das Augenmerk auf wichtigeren Dingen als auf " oder ' bei String
|

14-08-2005, 15:15
|
|
Hopka
PHP Expert
|
|
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.172
|
|
http://hopka.net/string.php
http://hopka.net/string.php5
Wenn keine Variablen drin vorkommen ist mal die Methode mit ' schneller und mal die mit ". Meistens sogar die mit ".
Zitat:
Original geschrieben von ghostgambler
weil PHP in " nach Variabeln sucht und in ' nicht
|
Nein, PHP sucht nach gar nichts. Erst läuft ein so genannter Tokenizer drüber, der nach Tokens sucht (das sind Schlüsselwörter wie if oder else, aber auch alles andere, was zur Syntax gehört wie $, " und '). Wenn jetzt innerhalb der " kein Token für eine neue Variable ($) vorkommt, dann läuft er dort genau so schnell drüber wie über den String mit '. Das passiert außerdem noch bevor der Code ausgeführt wird und die Funktionen zur Zeitmessung aktiv werden.
Und zu asp2php möchte ich noch ergänzen, dass diese so genannten Microbenchmarks (wie in dem Link von penizillin zu finden) nicht sehr aussagekräftig sind. Dort wird ja nur die Ausführungszeit von einzelnen Codezeilen untersucht, und andere wichtige Dinge werden völlig außen vor gelassen wie z.B. der Speicherverbrauch oder die "Compile-Zeit" (bei PHP wird ja jedes Script beim Aufruf normalerweise neu compiliert und ausgeführt). Wenn man wirklich herausfinden will, wo man seine Scripte optimieren kann, dann hilft einem ein Tool wie xdebug sehr viel weiter, weil das auflisten kann, welche Funktionen wie oft aufgerufen werden, und wie lange sie durchlaufen.
|

14-08-2005, 15:28
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
Zitat:
|
Wenn keine Variablen drin vorkommen [...]
|
ich meine, es geht um das gegenteil. und deinen eigenen benchmarks zufolge macht der z.t. fast das doppelte an zeit.
Zitat:
String in ' mit 2 über . $var . eingefügten Variablen: 0.022278 sec
String in " mit 2 enthaltenen Variablen: 0.045635 sec
|
Zitat:
|
Und zu asp2php möchte ich noch ergänzen [...]
|
völlig einverstanden.
|

14-08-2005, 16:15
|
|
derHund
PHP Master
|
|
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
|
|
__________________
Die Zeit hat ihre Kinder längst gefressen: hund (back in black) | ??? | ??? | ...
|

14-08-2005, 21:37
|
|
tomstig
Registrierter Benutzer
|
|
Registriert seit: Jul 2003
Ort: wr n
Beiträge: 878
|
|
Abgesehen von der Performance gehört das Trennen von Strings und Variablen zum sauberen Programmieren, deshalb sollte man sich das von Anfang an angewöhnen, weil es unter anderem erheblich das Lesen und Analysieren von Quellcodes erleichtert.
Und wenn ich dann lese, "ich kann erst seit 2 wochen/3 tage/5 stunden php" und dann les ich
dann weiß ich automatisch, dass beim lernen etwas falsch gelaufen ist.
|

03-11-2005, 09:48
|
|
firstlord18
Member
|
|
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
|
|
Ok, hab nun den ganzen thread gelesen, aber irgendwie verstehe ich trotzdfem nicht richtig, warum '' besser als "" sind. Ich dachte immer (und so stands glaub ich auch in meinen büchern), dass das völlig egal ist (zumindest bei Standart strings etc.
Klar ist mir, dass sowas wie
'$var'
und "$var"
und sowas wie
'\n'
und
"\n"
ein Unterschied macht, aber bei ganz normalen Stringzuweißungen und so versteh ich's jetzt net ganz! Soll ich nun immer bei Strings und bei Indices eines Arrays statt "" '' nutzen oder wie?
|

03-11-2005, 09:52
|
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
Zitat:
Original geschrieben von firstlord18
Soll ich nun immer bei Strings und bei Indices eines Arrays statt "" '' nutzen oder wie?
|
Du kennst den Spruch mit dem Dachdecker?
P.S. Es heißt "Zuweisung"
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|