Anfäger und Array

Guten Tag,

ich habe eine mini Tabelle
Uhrzeit Tag Ort
10| Mittwoch|Berlin
22|Freitag|Dresden

usw

wie musse in Array aussehen der diese Daten hat?
Einfache Arrays kann ich, aber mit mehr als zwei “Spalten” bekomme ich Probleme.

Wenn ich die Tabelle abfrage lese ich sie mit While aus, wie zeige ich mir die Daten dann aber an?
Vielen Dank
GuckstDu

Lass dir doch einfach mal das Array mittels print_r($array); ausgeben, dann siehst du wie die Feldnamen heißen und kannst es dann per z.B. $array[0][feldname] auslesen.

Hallo, dazu muss ich doch erst einmal wissen, wie ich o.0 die Daten in das Array bekomme.

Dank
GD

guckstdu hier: usegroup.de/software/phptutorial/arrays.html

:slight_smile:

Hallo, ich glaub ich bin ein , naja…"nicht so schnell versteher"
Das Beispiel habe ich jetzt gefunden.

[code]$test = array();
$test[] = array(“zeit”=>“10”,
“Tag”=>“Montag”,
“Ort” =>“Berlin”);
$test[] = array(“zeit”=>“11”,
“Tag”=>“Dienstag”,
“Ort” =>“Dresden”);

$test[] = array(“zeit”=>“12”,
“Tag”=>“Mittwoch” ,
“Ort” =>“Halle”);

echo "zeit: ".$test[1][“zeit”];
echo " Tag: ".$test[1][“Tag”];
echo " Ort: ".$test[1][“Ort”];[/code]

das würde ja fast passen, nur das ausgeben ist mir unklar?

Wenn ich eine Tabelle abfrage gebe ich das ergebnis als $row[‘zeit’], $row[‘tag’], $row[‘ort’], zurück, Zeile für Zeile in einer WheileSchleife, so ungefähr müsst das doch auch als arry gehen, denn $row[‘zeit’], ist ja auch “nur” ein assoziatives Array.

Ich hänge fest.
Danke
GuckstDu

Na dann kommt halt jetzt print_r zum Einsatz … und auch mal fuer die $row-Variante mit einem Datenbankergebnis, dann kannst du beides ja mal vergleichen.

Hallo,

ich glaube ich habe es hinbekommen.
3 Fragen habe ich aber noch.

[code]$test = array();
$test[] = array(‘Zeit’=>“10”, ‘Tag’=>“Montag”, ‘Ort’ =>“Berlin”);
$test[] = array(‘Zeit’=>“11”, ‘Tag’=>“Dienstag”, ‘Ort’ =>“Dresden”);
$test[] = array(‘Zeit’=>“12”, ‘Tag’=>“Mittwoch” , ‘Ort’ =>“Halle”);

foreach($test as $ausgabe)
{
echo “$ausgabe[Zeit]| $ausgabe[Tag]| $ausgabe[Ort]
\n”;
}
echo"

Zweite Variante";
foreach($test as $ausgabe)
{
echo “”.$ausgabe[“Zeit”]."| “.$ausgabe[“Tag”].”| “.$ausgabe[“Ort”].”
\n";
}[/code]

1.Warum muss ich ein leeres array am Anfang erzeugen?
2.ich habe zwei Varianten der Ausgabe erstes echo und zweites. Worin bestehen die Unterschiede, außer in der schreibweise?
Ich kannte nur die zweite Variante.
3. gibt es noch eine bessere Art mein Problem zu lösen ?

Danke
GD

Damit die Variable als Array initialisiert ist.

Die zweite ist m.E. sauberer und uebersichtlicher (na ja, zumindest wenn man keine Anfuehrungszeichen benutzen wuerde, wo sie nicht erforderlich sind, sondern Hochkommata), und ausserdem weniger fehleranfaellig.

php.net/manual/en/language.types.string.php

Das kommt auf das “Problem” an, sprich die genau Aufgabenstellung. Bis jetzt hast du noch keine beschrieben.

Hallo Chrisb,

echo "<b>".$ausgabe['Zeit']."</b>| ".$ausgabe['Tag']."| ".$ausgabe['Ort']."<br />\n";

meintest Du so?

Mein Problem war, ich suchte nach einer Möglichkeit,
Daten die ich bis jetzt in Tabellen pflege und die nach der Eingabe in diese Tabellen praktisch unveränderlich sind in Arrays zu schreiben, diese dann ähnlich wie mysql Abfragen auszuwerten.

Danke
GD

[quote=“guckstdu”]Hallo Chrisb,

echo "<b>".$ausgabe['Zeit']."</b>| ".$ausgabe['Tag']."| ".$ausgabe['Ort']."<br />\n";
meintest Du so?[/quote]
echo ‘’…

Wenn kein Parsen des Stringinhaltes auf Variableninhalte erforderlich ist, dann sehe ich keine Notwendigkeit, Anfuehrungszeichen zu benutzen.

[quote]Mein Problem war, ich suchte nach einer Möglichkeit,
Daten die ich bis jetzt in Tabellen pflege und die nach der Eingabe in diese Tabellen praktisch unveränderlich sind in Arrays zu schreiben, diese dann ähnlich wie mysql Abfragen auszuwerten.[/quote]
Na ja, dann ganz einfach analog - Schleife ueber Array-Inhalte, darin Ausgabe.

:wink2: Danke

Ab gesehen vom parsen durch PHP is nun wirklich kein großer Unterschied zwischen ’ und ".
Wenn er lieber " benutzen will, soll er das machen. Wiso muss es gleich wieder ’ sein? Jedem das seine :wink:

ich zB verwende ’ ’ für Indizes und " " für Strings…

Ist gut Lesbar und die paar Tausendstel Parse-Time sind mir eig. ziemlich egal :wink:

Seh mal :wink: Ich händle es genauso. Zudem hat man dann beim definieren von SQL-Querys nicht die nötigkeit, ’ zu escapen.
Im HTML bin ich das schon längst gewohnt:

XHTML lässt auch ’ ’ statt " " zu…

Das gefällt nicht jedem, sieht jedoch sauber aus :wink:

Du kennst den Spruch “umgekehrt wird ein Schuh draus” …?

PHP laesst auch ’ statt " zu als Stringbegrenzer :slight_smile:

Viel Spaß noch beim zanken, ich hau ab :wink:

:ps: !haue :wink2:

Also ich habe noch nie einen Array vorher mit $test = array(); definiert…
Das ist eigentlich unnötig.
Du musst nur aufpassen wenn du nicht mit Klassen und Funktionen arbeitest,
dass du die selbe Variable bereits verwendest…
Wenn sie sonst nicht verwendet wird ist alles kein Problem!

Wenn du die Daten aus deiner Tabelle liest, würde ich das so machen, dass is schon fast wie bei den anderen vorher mit nem kleinen, manchmal wichtigem, Unterschied:

(Ich verwende mal ausnahmsweise keine MySQL Klasse^^
Naja und wie man das Echo macht, ist jedem halt überlassen…)

[code]<?php
$query = mysql_query(‘SELECT * FROM tabellenname’);

while($res=mysql_fetch_assoc($query))$results[]=$res;

//Foreach gibt bei leerem Array einen Fehler aus, daher vorher überprüfen, ob der Array
// auch etwas beinhaltet

if(count($results)>0)
{
foreach($results as entry)
{
echo “{$entry[Zeit]}| {$entry[Tag]}| {$ausgabe[Ort]}
\n”;
}
}
else
{
echo “Es wurden keine Datensätze gefunden!”;
}

?>[/code]

mfg ZeMi

Du solltest unbedingt anführungszeichen für die assoziativen arraykeys verwenden, um aufwärtskompatibel zu bleiben. so ist offiziell falsch, nur ignoriert der parser das

jo und sobald man zufälligerweise eine Konstante definiert hat die Zeit, Tag oder Ort heißt, wird es wahrscheinlich Probleme mit dem Array geben ^^

<?php
define("Zeit", "blubb");

$array[Zeit] = "abc";
print_r($array);
?>

Ausgabe:

Array ( [blubb] => abc )

blubb als Key, und nicht wie erwartet Zeit.
Deshalb ist $array[‘Zeit’] besser als $array[Zeit]