mikrocontroller.net

Forum: PC-Programmierung Frage zu Arrays


Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wieso der . ?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wo? jede offene wird auch wieder geschlossen

Autor: Peter (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 ']'

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht 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"]";
?>

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo beginnt und wo endet in
echo "Der User mit der ID $user[46]["id"] heißt $user[46]["name"]. Seine
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
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
echo "Der User mit der ID ".$user[46]["id"]." heißt ".$user[46]["name"]." Seine Emailadresse ist ".$user[46]["email"]."<br>\n";

oder auch
echo "Der User mit der ID ",
     $user[46]["id"],
     " heißt ",
     $user[46]["name"],
     " Seine Emailadresse ist ",
     $user[46]["email"],
     "<br>\n";

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der . verbindet einfach 2 Stings miteinander.

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wieso muss ich dann noch mal neu nen string auf machen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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
   echo "Der User mit der ID ", $user[46][id], "<br>\n";

   echo "Der User mit der ID ",
        $user[46][id],
        "<br>\n";

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und das br is wofür?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mediaevent.de/xhtml/br.html

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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Zeile hier
echo "Der User mit der ID $user[46]["id"] heißt $user[46]["name"]. Seine
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:
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:
echo 'Der User mit der ID ' . htmlspecialchars($user[46]['id']) .
  ' heißt ' . htmlspecialchars($user[46]['name']) . '.' .
  ' Seine Emailadresse ist ' . htmlspecialchars($user[46]['email']) .
  "<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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.