Also ich nehm folgenden Code: <?php $user[46]["id"]="46"; $user[46["name"]="Irgendwas"; $user[46]["email"]="irgendwas@wer.com"; echo "Der User mit der ID $user[46]["id"] heißt $user[46]["name"]. Seine Emailadresse ist $user[46]["email"]<br>\n"; ?> Dreamweaver sagt: Keine Fehler oder Warnungen gefunden.[HTML 4.0] Firefox bzw IE sagt : Parse error: syntax error, unexpected '[', expecting ']' in /usr/export/www/index.php on line 4 Daher die Frage was is denn nu falsch un wie kann ich es "gangbar" machen. Das steht so aber in meinem Buch von Gallileo Computing zumindest das Grundgerüst mit den doppelten Arrays.
Array lassen sich nicht so ausgeben echo "Der User mit der ID ".$user[46]["id"]." heißt ".$user[46]["name"]. Seine Emailadresse ist ".$user[46]["email"]."<br>\n"; sollte gehen
Peter wrote:
> Array lassen sich nicht so ausgeben
Soweit ich weiß geht das so in PHP.
Das Problem ist einfach nur, dass du in einer Zeile eine geschlossene
eckige Klammer vergessen hast.
nein es kann nicht gehen weil der string in " angeschlossen wird, aber das array auch wieder ein " braucht.
> und wo? jede offene wird auch wieder geschlossen
Hier
$user[46["name"]="Irgendwas";
^
|
Das sagt im übrigen auch die Fehlermeldung. Brauchst nur durchzählen
welches die Zeile Nr 4 ist. Laut Fehlermeldung fehlt dort ein ']'
habsch au eben gesehen nur jetzt kommt: Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in index.php on line 7 das wieder liegt 100% mit dem " zusammen am ende Aktueller Code: <?php $user[46]["id"]="46"; $user[46]["name"]="Irgendwas"; $user[46]["email"]="irgendwas@wer.com"; echo "Der User mit der ID $user[46]["id"] heißt $user[46]["name"]. Seine Emailadresse ist $user[46]["email"]"; ?>
Wo beginnt und wo endet in
1 | echo "Der User mit der ID $user[46]["id"] heißt $user[46]["name"]. Seine |
2 | Emailadresse ist $user[46]["email"]"; |
der String. (Hinweis: Das Syntaxcoloring hier im Forum zeigt dir das sogar recht deutlich) Ein String geht vom öffnenden " bis zum nächsten ", welches den String wieder schliesst. Du hast hier also
1 | echo "Der User mit der ID $user[46][" id "] heißt $user[46] ... |
Der String geht bis ...46][, dann ist er zuende, als nächstes kommt id, was nicht mehr Teil des Strings ist. Wie Peter oben schon sagte
1 | echo "Der User mit der ID ".$user[46]["id"]." heißt ".$user[46]["name"]." Seine Emailadresse ist ".$user[46]["email"]."<br>\n"; |
oder auch
1 | echo "Der User mit der ID ", |
2 | $user[46]["id"], |
3 | " heißt ", |
4 | $user[46]["name"], |
5 | " Seine Emailadresse ist ", |
6 | $user[46]["email"], |
7 | "<br>\n"; |
glaut mir doch mal es geht so nicht http://de.php.net/manual/en/function.echo.php so geht es auch "echo "this is {$baz['value']} !"; ich würde aber "echo "this is ".$baz['value']." !"; schreiben
Also habs mal kastriert: echo "Der User mit der ID ".$user[46][id]."<br>\n"; Die Variablen und der rest ist gleich so funzt es nur warum ausgerechnet ". ." hab ich noch nit gerallt
Nette Mann wrote: > Die Variablen und der rest ist gleich so funzt es nur warum ausgerechnet > ". ." hab ich noch nit gerallt Weil der Punkt aus 2 Strings einen einzigen macht Deine Ausgabe besteht aus 3 Teilen 1) aus "Der User mit der ID " 2) dem Inhalt von $user[46][id] 3) und dem String "<br>\n" Mit dem . werden diese 3 einzelnen Strings aneinandergehängt und ergeben den kompletten String, den echo dann ausgibt. Alternativ hättest du dem echo auch die 3 Strings einzeln als 3 gesonderte Ausgaben übergeben können
1 | echo "Der User mit der ID ", $user[46][id], "<br>\n"; |
2 | |
3 | echo "Der User mit der ID ", |
4 | $user[46][id], |
5 | "<br>\n"; |
Die Lösung sieht übrigens so aus: <?php $user[46]["id"]="47"; $user[46]["name"]="Irgendwas"; $user[46]["email"]="irgendwas@wer.com"; echo "Der User mit der ID ".$user[46][id]." heißt ".$user[46][name].". Seine Emailadresse ist ".$user[46][email]."<br>\n"; ?> ODER <?php $user[46]["id"]="47"; $user[46]["name"]="Irgendwas"; $user[46]["email"]="irgendwas@wer.com"; echo "Der User mit der ID ".$user[46]["id"]." heißt ".$user[46]["name"].". Seine Emailadresse ist ".$user[46]["email"]."<br>\n"; ?> nebenbei was bringt eigentlich das br? lass ich es weg sieht es aus wie vorher
HÄ? also mal ohne das echo $s = "asdfasdf"; bei 2 Strings macht man $s = "String1" . "String2"; mit variable $s = "Sting1 $variable "String2"; und jetzt mit array $s = "String1" . $array["1"] . "String2"; und echo will nunmal ein String haben. echo $s damit kann $s gleich eingsetzt werden und man hat das konstrukt von oben
$sprache = array("0" => "dutsch", "1" => "polnisch", "2" => "wayne") ? eher so denke wegen bei 2 Strings macht man $s = "String1" . "String2"; und das br is wofür?
Das sollte man nicht machen $user[46][email] String immer in " setzen. also: $user[46]["email"] http://de.php.net/manual/en/language.types.array.php
> und das br is wofür?
"<br>\n"
das <br> ist ein Zeilenumbruch für den Browser/Benutzer
das \n für den quellcode der HTML, könnte man weglassen
klar kenn ich google und wie man googelt weis ich auch nur wenn de geschrieben hättest br = Zeilenumbruch hätte das Board ein paar Byte gespart. Und eventuell hat jemand das selbe prob und liest sich das hier auch mal durch. SOwas soll es ja auch geben.
Nette Mann wrote:
> geschrieben hättest br = Zeilenumbruch hätte das Board ein paar Byte
Sorry.
Aber als angehender PHP Programmierer sollte man schon ein paar einfache
HTML Experimente (= HTML Code im Klartext mit Notepad schreiben) gemacht
haben. Und dabei stolpert man zwangsweise über <br>
PHP erzeugt einen HTML-Text, der dann vom Browser ausgeführt wird.
Um also PHP zu programmieren, muss man wissen, welchen HTML-Code der
Browser sehen will. Und dazu muss man nun mal ein paar HTML Tags (aka
HTML-'Befehle') kennen.
@Nette Mann Ich muss aber auch sagen, wenn man gleich mit Dreamweaver anfängt und mit array loslegt sollte man zu erste verstehen was man macht, dazu gehört es auch das man die Grundlagen von HTML versteht. Also mal eine kleine webseite mit dem notepad erzeugen kann. Als nächstes sollte man ein kleines "Hallo World" in php schreiben und nicht alle irgendwo her kopieren. Wo hattest du die Zeile echo "Der User mit der ID $user[46]["id"] heißt $user[46]["name"]. Seine Emailadresse ist $user[46]["email"]<br>\n"; überhaupt her, wenn du nicht weiss was sie macht? Ist das die neue Copy/Past gesellschaft!
Vielleicht solltest du erst mal ein einführendes HTML Tutorial durchmachen. So wie das hier http://de.html.net/tutorials/html/ damit du überhaupt verstehst, was dein PHP-Code als Ausgabe überhaupt erzeugen muss, damit der Browser etwas Bestimmtes macht.
html hab ich hinner mir und php verbindung aufbauen zu mysql sowie login und cookie setzen. nur das br hatte ich meistens mit <p> </p> umgangen. ENtschuldigung das ich gefragt hatte.
Die Zeile hier
1 | echo "Der User mit der ID $user[46]["id"] heißt $user[46]["name"]. Seine |
2 | Emailadresse ist $user[46]["email"]<br>\n"; |
ist FALSCH und nicht mehr modern, weil: - Konstanten (die Array-Indizes, id, name, email) setzt man in einfache Anführungszeichen, das spart Ausführungszeit. - Eingeschlossene Variablen sollte man in {} setzen, damits keine Verwirrung gibt. - Rohdaten dürfen nicht ungefiltert an den Browser gelangen. Richtig für die ersten beiden Punkte wäre:
1 | echo "Der User mit der ID {$user[46]['id']} heißt {$user[46]['name']}. Seine Emailadresse ist {$user[46]['email']}<br />\n"; |
Und ganz korrekt wäre:
1 | echo 'Der User mit der ID ' . htmlspecialchars($user[46]['id']) . |
2 | ' heißt ' . htmlspecialchars($user[46]['name']) . '.' . |
3 | ' Seine Emailadresse ist ' . htmlspecialchars($user[46]['email']) . |
4 | "<br />\n"; |
Den Kram mit ß kann man sich übrigens getrost schenken. Sinnvoller
ists da, den richtigen Zeichensatz anzugeben. Dann müssen nur noch < und
> und & und " maskiert werden.
Peter wrote: > nein es kann nicht gehen weil der string in " angeschlossen wird, aber > das array auch wieder ein " braucht. Achso, ja stimmt. Gar nicht gesehen :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.