• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage zur PHP Syntax

freakXHTML

Mitglied
Hallo zusammen,
ich als C++ Fan, bin schockiert über die php Syntax. Kann mir mal bitte jemand das hier ekrlären. Ich verstehe nicht, was hier passiert:

PHP:
<?php
$pseudoName = 'variable';
$variable = 1000;
echo $$pseudoName;
?>

Was wird der Variable "pseudoName" zugewiesen? Kein String!! Was bedeuten hier die einfachen Anführungsstriche? Warum wird 1000 ausgegeben. Handelt es sich um einen variablen Variablennamen?

Vielen Dank
lg, freakXHTML
 
Das ist ein ganz normales Produkt ^^
<?php
$pseudoName = 'variable'; // Stringzuweisung in $pseudoName steht die Zeichenkette variable.
$variable = 1000; // Integerzuweisung in $variable ist die Zahl 1000
echo $$pseudoName; // Ist missverständlich. Grob heißt es echo $variable statt echo $pseudoName

Wenn du $$variable machst, wird der Inhalt von $VARIABLEINHALT_IN$variable ausgegeben.

Das, was du erwartest ist echo $pseudoName
Da kommst du an variable als Ausgabe ;)
 
Ja, dadurch kannst deine Variablennamen variabel halt. Ich habe das noch nie gebraucht und ich glaube auch nicht, dass es dafür einen vernünftigen Anwendungsfall gibt.

Eine Alternativsyntax wäre:
PHP:
${$preudoName}
 
ich als C++ Fan, bin schockiert über die php Syntax.
Ja, zu recht. Denn was Variabeln angeht, sind die meisten Skriptsprachen weit, sehr weit, von C++ entfernt. Es gibt keine Typen, du musst sie i.d.R. nicht deklarieren und du kannst zur Laufzeit alles Mögliche damit anstellen. Dafür hat unsereiner keine Pointer ;)
 
Struppi, bitte erzähl nicht irgendwas.

PHP hat Typen und Variablen sollten deklariert werden. PHP ist nur nicht so empfindlich auf undeklarierte Variablen wenn man das error reporting ausschaltet...
 
Laut Wikipedia ist PHP eine schwach typisierte Sprache. Eine $variabel ist eine Variabel, du kannst hier jeden Typ zuweisen. Und wie deklariert man in PHP Variabeln?

EDIT: Ok, mißverständlich. Es gibt Typen, nur spielen diese bei der Zuweisungen keine Rolle. Jede variabel kann jeden Typ annehmen und zur Laufzeit auch geändert werden.
 
Zuletzt bearbeitet von einem Moderator:
$variabel = '';
So deklariert man eine Variabel vom Typ String beispielsweise.

Denn wenn du das vergleichst:

if ($foo == 'bar') {}
$foo aber nicht deklariert wurde, wie ich es eben beschrieben habe, wird eine Notice erscheinen, in der gesagt wird, dass $foo nicht deklariert wurde.
 
Das ist eine Intialiserung, die in PHP automatisch eine Deklarierung ist. Eine explizite Deklarierung gibt es nicht in PHP, wie z.b. var in JS oder my in Perl. Und das ist eben der große Unterschied zu einer typenbasierte Deklarierung, wie in C/C++ oder Java. Diese ist verpflichtend.
 
freakXHTML schrieb:
ich als C++ Fan, bin schockiert über die php Syntax.

Das hat mich gerade sehr zum Lachen gebracht. :)

Ich habe sowas (Dokuseite hier: PHP: Variable variables - Manual)...

PHP:
$pseudoName = 'variable';
$variable = 1000;
echo $$pseudoName;

...auch noch nie gebraucht.

Höchstens mal verkappt in Form von:

PHP:
$obj = MyObject();
$method = 'myMethod';
$obj->$method();     // Call $obj->myMethod();

// Alternative:
call_user_func(array($obj, $method));
 
Das ist leider die einzige Möglichkeit Funktionen in PHP variabel aufzurufen. Ich würde das deshalb nicht vergleichen wollen.
 
Zurück
Oben