mehrdimensionales array ausgeben
theresa
- php
hi leute!
ich nähere mich einem großen persönlichen erfolg.
kann mir jemand erklären wie ich ein mehrdimensionales arrays, dass ich hoffentlich richtig erstellt habe, ausgeben kann.
erstellung:
$akttermin = 1,2,3.....
$arra = 1,2,3.....
$array = array("$akttermin" => array("$arra" => "0"));
ausgabe:
echo $array[1][1];
natürlich erschient auf mienem bilschirm genau nichts...
mach ich was falsch?
danke,
eure theresa
Hallo theresa,
kann mir jemand erklären wie ich ein mehrdimensionales arrays, dass ich hoffentlich richtig erstellt habe, ausgeben kann.
erstellung:
$akttermin = 1,2,3.....
$arra = 1,2,3.....
$array = array("$akttermin" => array("$arra" => "0"));ausgabe:
echo $array[1][1];natürlich erschient auf mienem bilschirm genau nichts...
[x] Du suchst die Funktion print_r().
Grüße
Marc Reichelt || http://www.marcreichelt.de/
hi leute!
mit print_r() kommt folgende ausgabe:
Array ( [2] => Array ( [28] => 0 ) )
was heisst das?
theresa
hi,
mit print_r() kommt folgende ausgabe:
Array ( [2] => Array ( [28] => 0 ) )was heisst das?
Das ist die Struktu deines Arrays - die du jetzt eigentlich verstehen können solltest.
Tipp: Schau in den Quelltext, oder setze ein <pre> darum - dann ist auch nicht alles in einer Zeile, sondern auch noch eingerückt.
gruß,
wahsaga
hi wahsaga!
die ausgabe versteh ich schon, aber ich verstehe nicht warum
ich nur eine zeile bekomme.
ich suche einen weg, in einer schleife die einzelnen werte der jeweiligen arrays auszugeben.
im sinne von:
echo $array[1][1];
echo $array[1][2];
echo $array[1][3];
.
.
.
echo $array[1][28];
echo $array[2][1];
echo $array[2][2];
echo $array[2][3];
.
.
.
echo $array[2][28];
danke für einen rat,
theresa
Moin,
die ausgabe versteh ich schon, aber ich verstehe nicht warum
ich nur eine zeile bekomme.ich suche einen weg, in einer schleife die einzelnen werte der jeweiligen arrays auszugeben.
schreib dir doch eine rekursive Funktion, die dir die Inhalte eines Arrays ausgibt und sich selbst aufruft, wenn der Inhalt ein array ist.
MfG,
Juan
Moin nochmal,
schreib dir doch eine rekursive Funktion, die dir die Inhalte eines Arrays ausgibt und sich selbst aufruft, wenn der Inhalt ein array ist.
also im Prinzip sowas hier:
function printArray($var){
for ($i=0;$i<sizeof($var);$i++){
if (!is_array($var[$i])){
echo $var[$i]."<br>";
}
else{
printArray($var[$i]);
}
}
}
MfG,
Juan
hallo leute, hallo juan!
ich danke für eure rege teilnahme, jedoch kann ich genau mit keinem von euren posts was anfangen.
ich bin anfänger, bitte vergesst das nicht.
ich weiß ja nichtmal was eine rekursive funktion ist...
für euch ist es doch wohl ein leichtes die werte meines arrays auszugeben, oder?
bitte helft mir doch mit einem code-beispiel, das kann ich lesen, verstehen und daraus lernen.
danke juan für dein beispiel, leider gibt das bei mir genau
nichts aus, weil die funktion printarray unbekannt ist...
kann mir vielleicht jemand erklären, warum folgender code ebenfalls
nichts ausgibt:
for($x2=1; $x2<=2; $x2++)
{
for($x=1; $x<=28; $x++)
{
print"$x:$x2-$x" . $array[$x2][$x] . "<br>";
}
}
danke!!!!!!!
Moin,
danke juan für dein beispiel, leider gibt das bei mir genau
nichts aus, weil die funktion printarray unbekannt ist...
kopiere dir die Funktion printArray doch einfach von meinem Post und dann ist sie nicht mehr unbekannt :-)
Grüsse,
Juan
hi juan!
hmm, verstehe....
wie kann ich dann die funktion aufrufen?
danke,
theresa
Hallo,
hmm, verstehe....
wie kann ich dann die funktion aufrufen?
<?PHP
$array1 = array('a','b','c');
$array2 = array('d','e','f');
$array3 = array('1','2','3');
$array4 = array($array1,$array2,$array3);
function printArray($var){
foreach($var as $k){
if (!is_array($k)){
echo $k."<br>";
}
else{
printArray($k);
}
}
}
printArray($array4);
?>
Das würde zu folgender Ausgabe führen:
a
b
c
d
e
f
1
2
3
Grüsse,
Juan
Hallo Theresa,
benutze für PHP-Arrays nicht for(), sondern foreach()
PHP-Arrays sind keine Arrays im klassischen Sinne, sondern es sind verkettete Strukturen. Mehrdimensionale sind Baumstrukturen.
Das führt dazu, dass keine Polymorphie vorliegen muss, die bei einem klassischen Array aber die Grundlage darstellt. Es können also Indexe fehlen oder z.B. nicht in der erwarteten Reihenfolge vorliegen.
Foreach() läuft die Kette in der Verkettungsreihenfolge ab.
LG
Chris
Hi,
ich bin anfänger, bitte vergesst das nicht.
ich weiß ja nichtmal was eine rekursive funktion ist...
nun denne, testen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
</head>
<body>
<?php
$myArr = array(
"blah" => array(
0 => "lala",
"xyz" => "bebe",
"urgs" => array("hep", "hip")
),
"haha" => array(
0 => "la",
1 => "li",
2 => "lu"
)
);
echo "Ausgabe print_r:<br><br><pre>";
print_r($myArr);
echo "</pre><br><br>";
// array ausgeben
function readOutArr($arr) {
// arraytiefe
static $i = 0;
foreach($arr as $key => $val) {
if(is_array($val)) {
echo (str_repeat(" ", $i)) . $key . " enthält:<br>";
$i ++;
readOutArr($val);
$i --;
} else {
echo (str_repeat(" ", $i)) . $key . " = " . $val . "<br>";
}
}
}
readOutArr($myArr);
?>
</body>
</html>
Gruesse, Joachim
hi joachim!
danke, danke, danke!
ich versteh schon langsam, worum es geht...
aber mir ist nicht klar, was ich dann beim bauen meines arrays falsch mache (while läuft zweimal durch):
$akttermin = 1;
while ($row = mysql_fetch_array($result))
{
$kid = $row["kid"];
$bh = $row["bh"];
$eh = $row["eh"];
$bm = $row["bm"];
$em = $row["em"];
$t_array = array("$akttermin" => array("1" => "$kid"));
$akth = 8;
$arra = 1;
for($g=1; $g<=14; $g++)
{
if ($akth <= $eh && $akth >= $bh)
{
if ($akth == $eh && $em == "1")
{
print "g: $g | akth: $akth | arra: $arra | halbe-YES | weil: $akth <= $eh && $akth >= $bh | array: array-$akttermin-$arra<br>";
$array = array("$akttermin" => array("$arra" => "1"));
$arra = $arra+1;
print "g: $g | akth: $akth | arra: $arra | volle-NO | weil: $akth <= $eh && $akth >= $bh | array: array-$akttermin-$arra<br>";
$array = array("$akttermin" => array("$arra" => "0"));
$arra = $arra+1;
}
else
{
print "g: $g | akth: $akth | arra: $arra | halbe-YES | weil: $akth <= $eh && $akth >= $bh | array: array-$akttermin-$arra<br>";
$array = array("$akttermin" => array("$arra" => "1"));
$arra = $arra+1;
print "g: $g | akth: $akth | arra: $arra | volle-YES | weil: $akth <= $eh && $akth >= $bh | array: array-$akttermin-$arra<br>";
$array = array("$akttermin" => array("$arra" => "1"));
$arra = $arra+1;
}
}
else
{
print "g: $g | akth: $akth | arra: $arra | halbe-NO | array: array-$akttermin-$arra<br>";
$array = array("$akttermin" => array("$arra" => "0"));
$arra = $arra+1;
print "g: $g | akth: $akth | arra: $arra | volle-NO | array: array-$akttermin-$arra<br>";
$array = array("$akttermin" => array("$arra" => "0"));
$arra = $arra+1;
}
$akth = $akth+1;
}
$akttermin = $akttermin+1;
}
überschreib ich irgendwas, oder muss ich indizies angeben? ich verstehs einfach nicht...
:(((
Hallo,
schreib dir doch eine rekursive Funktion, die dir die Inhalte eines Arrays ausgibt und sich selbst aufruft, wenn der Inhalt ein array ist.
Ich glaube, dass eine rekursive Funktion hier nicht in Theresas Interesse sein kann, sondern eine dedizierte Funktion besser wäre.
Die gewünschte Datenstruktur muss sie ohnehin vorher festlegen, und bei der Ausgabe kann sie sie auch gleich überprüfen.
Um also eine Datenstruktur gezielt ausgeben zu können, muss man sie erst einmal beschreiben. Was soll wo stehen?
LG
Chris
Hi,
schreib dir doch eine rekursive Funktion
ich bin ziemlich sicher, dass jemandem, der print_r nicht versteht, mit dieser Aussage echt geholfen wurde.
Gruesse, Joachim
Hi,
kann mir jemand erklären wie ich ein mehrdimensionales arrays, dass ich hoffentlich richtig erstellt habe, ausgeben kann.
vielleicht mit print_r($arr) ?
Gruesse, Joachim