Forum: PC-Programmierung Frage zu Arrays


von Nette M. (nette-mann)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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

von Nette M. (nette-mann)


Lesenswert?

und wieso der . ?

von Simon K. (simon) Benutzerseite


Lesenswert?

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.

von Nette M. (nette-mann)


Lesenswert?

und wo? jede offene wird auch wieder geschlossen

von Peter (Gast)


Lesenswert?

nein es kann nicht gehen weil der string in " angeschlossen wird, aber 
das array auch wieder ein " braucht.

von Karl H. (kbuchegg)


Lesenswert?

> 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 ']'

von Nette M. (nette-mann)


Lesenswert?

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"]";
?>

von Karl H. (kbuchegg)


Lesenswert?

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";

von Peter (Gast)


Lesenswert?

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

von Nette M. (nette-mann)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

der . verbindet einfach 2 Stings miteinander.

von Nette M. (nette-mann)


Lesenswert?

und wieso muss ich dann noch mal neu nen string auf machen?

von Karl H. (kbuchegg)


Lesenswert?

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";

von Nette M. (nette-mann)


Lesenswert?

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&szlig;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&szlig;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

von Peter (Gast)


Lesenswert?

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

von Nette M. (nette-mann)


Lesenswert?

$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?

von Peter (Gast)


Lesenswert?

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

von Nette M. (nette-mann)


Lesenswert?

und das br is wofür?

von Karl H. (kbuchegg)


Lesenswert?

http://www.mediaevent.de/xhtml/br.html

Du kennst aber schon google und weisst wie man ihn benutzt?

von Peter (Gast)


Lesenswert?

> 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

von Nette M. (nette-mann)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

@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!

von Karl H. (kbuchegg)


Lesenswert?

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.

von Nette M. (nette-mann)


Lesenswert?

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.

von Sven P. (Gast)


Lesenswert?

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 &szlig; kann man sich übrigens getrost schenken. Sinnvoller 
ists da, den richtigen Zeichensatz anzugeben. Dann müssen nur noch < und 
> und & und " maskiert werden.

von Simon K. (simon) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.