Antworten auf deine Fragen:
Neues Thema erstellen

Mehrdimensionales Array mit foreach und Variablen ausgeben

SWFP

SWFP Mitglied

Hi,

hier erst mal mein Code:

PHP:
<?php

$heute = date("d.m");

$year = date("Y");

$Geburtstage = array("01.01."=>"",
...
"04.02."=>array("Dietrich Bonnhoeffer (1906-1945), dt. ev. Theologe (Bekennende Kirche); Widerstandsk&auml;mpfer gegen des NS-Regime", "Charles Lindbergh (1902-1974), Us-am. Pilot (erster Nonstop-Flug &uuml;ber den Atlantik)", "Ludwig Erhard (1887-1977), dt. CDU-Politiker, Wirtschaftsminister (1949-1963), 2. Bundeskanzler (1949-1963)", "Friedrich Ebert (1871-1925), dt. SPD-Politiker, Reichpr&auml;sident (1919-1925, Weimarer Republik)"),
...
"31.12."=>""
);


//Geburtstage ausgeben
foreach ($Geburtstage["04.02."] as $item) {
	echo "<b>04.02.:</b> ".$item."<br />";
}

Das möchte ich jetzt etwas verallgemeinern. Wäre ja blöd alles selbst schreiben zu müssen, dann nützte mir ja auch das array nichts.:lol:

Also habe ich folgendes versucht:

PHP:
echo "<b>".$heute.":</b>";
foreach ($Geburtstage["$heute"] as $item) {
	echo "<ul><li>&nbsp; &nbsp;".$item."</li></ul><br />";
}

Aber das funktioniert nicht so ganz. Kann mir da jemand helfen?

Was mache ich denn, wenn ich mal nur ein Element habe? Dazu brauche ich ja dann eigentlich kein array formulieren. Aber dann würde es mit dem auslesen schwierig werden.

MfG
SWFP
 
Zuletzt bearbeitet:

mwxx

Nicht mehr ganz neu hier

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Versuch das doch mal mit :

foreach ($Geburtstage[$heute] as $item) {
 

Duddle

Posting-Frequenz: 14µHz

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Dann ist die übergebene Variable kein Array.

Wahrscheinlich gibst du foreach() ein Element aus $Geburtstage, für das du den leeren String als Wert hast. Ein leerer String ist aber kein Array, also streikt foreach().


Duddle
 

SWFP

SWFP Mitglied

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

:'(Ah, danke. Aber wenn ich da etwas einsetze kommt da auch nichts raus.

Ich habe jetzt mal sowas versucht:

PHP:
if ($heute != '') {

echo $Geburtstage[$heute];
}

Ich hoffe ich habe dich richtig verstanden: mein $heute ist das Datum, welches, einem Array-Objekt entspricht, da dort alle Tage vorhanden sind.
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Ich hoffe ich habe dich richtig verstanden: mein $heute ist das Datum, welches, einem Array-Objekt entspricht, da dort alle Tage vorhanden sind.
Den Satz verstehe ich nicht, aber: foreach() erwartet ein Array, nicht mehr und nicht weniger. Hinter deinen Variablen, so wie du sie definierst, steckt aber kein Array.

$heute ist eine Variable, die für einen Wert steht. Dieser Wert wird als Schlüssel in $Geburtstag benutzt, um den Wert an der Stelle $heute herauszufinden. Dieser Wert wiederum muss ein Array sein, ist aber ein String.


Duddle
 

SWFP

SWFP Mitglied

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Aber was ist damit:

Ich habe jetzt mal sowas versucht:

PHP:
if ($heute != '') {

echo $Geburtstage[$heute];
}

Außerdem ist es ein Mehrdimensionales Array und der angesprochene Schlüssel enthält somit ein Array.

SWFP
 

Duddle

Posting-Frequenz: 14µHz

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Es geht ja nicht darum, dass $heute leer ist. Das ist auch eine potentielle Fehlerquelle, aber ich gehe davon aus, dass du $heute korrekt füllst bevor du es einsetzt.

Wenn $heute ein vorhandener Schlüssel in $Geburtstage ist, dann wird der Wert für diese Stelle geholt. Der Wert ist (wenn ich deinem ersten Code folge) entweder ein Array oder der leere String. Darauf musst du prüfen, weil der leere String kein Array ist und sich dann foreach beschwert.

Außerdem ist es ein Mehrdimensionales Array und der angesprochene Schlüssel enthält somit ein Array.
Das ist schlichtweg falsch. In deinem ersten Auszug
PHP:
"31.12."=>""
deklarierst du klipp und klar den Wert des Schlüssels "31.12." als leeren String - also kein Array.


Duddle
 

SWFP

SWFP Mitglied

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Ja, das stimmt. Das muss ich überprüfen. Geht denn das obige Script?

Hab jetzt mal spaßeshalber sowas geschrieben als Test:
PHP:
"03.09."=>array("kein Eintrag", "auch kein anderer Eintrag"),
trotzdem meint er das foreach-Argument sein nicht valide.

SWFP
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Code besteht aus mehr als nur einer Zeile. Wenn du den Kontext nicht zeigst, kann nicht abgeleitet werden was du wann machst und wo daher der Fehler stecken könnte.

Ich habe es mehrfach vorher in deinen Threads gesagt: zeig lieber mehr von deinem Code als zu wenig. Ansonsten ist es unglaublich schwierig, dir effizient zu helfen.


Duddle
 

SWFP

SWFP Mitglied

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Gut. Hier den gesamten Code:

PHP:
<?php

$heute = date("d.m");

$year = date("Y");

$Geburtstage = array("01.01."=>"",
"02.01."=>"",
"03.01."=>"",
"04.01."=>"",
"05.01."=>"",
"06.01."=>"",
"07.01."=>"",
"08.01."=>"",
"09.01."=>"",
"10.01."=>"",
"11.01."=>"",
"12.01."=>"",
"13.01."=>"",
"14.01."=>"",
"15.01."=>"",
"16.01."=>"",
"17.01."=>"",
"18.01."=>"",
"19.01."=>"",
"20.01."=>"",
"21.01."=>"",
"22.01."=>"",
"23.01."=>"",
"24.01."=>"",
"25.01."=>"",
"26.01."=>"",
"27.01."=>"",
"28.01."=>"",
"29.01."=>"",
"30.01."=>"",
"31.01."=>"",
"01.02."=>"",
"02.02."=>"",
"03.02."=>"",
"04.02."=>array("Dietrich Bonnhoeffer (1906-1945), dt. ev. Theologe (Bekennende Kirche); Widerstandsk&auml;mpfer gegen des NS-Regime", "Charles Lindbergh (1902-1974), Us-am. Pilot (erster Nonstop-Flug &uuml;ber den Atlantik)", "Ludwig Erhard (1887-1977), dt. CDU-Politiker, Wirtschaftsminister (1949-1963), 2. Bundeskanzler (1949-1963)", "Friedrich Ebert (1871-1925), dt. SPD-Politiker, Reichpr&auml;sident (1919-1925, Weimarer Republik)"),
"05.02."=>"",
"06.02."=>"",
"07.02."=>"",
"08.02."=>array("<!--<section>-->John Grisham<!--</section>--> <!--<summary>-->(*1955), US-am. Jurist und Schriftsteller <i>('Die Firma', 'Die Jury', 'Der Regenmacher', etc.)</i><!--</summary>-->","James Dean (1931-1955), US-am. Schauspieler <i>('Denn sie wissen nicht, was sie tun', 'Jenseits von Eden', 'Giganten', etc.)</i>", "Jules Verne (1828-1905), frz. Sci-Fi-Schriftsteller <i>('Die Jagd nach dem Meteor', ' Die Reise zum Mittelpunkt der Erde', '20.000 Meilen unter dem Meer', etc.)</i>"),
"09.02."=>"",
"10.02."=>"",
"11.02."=>"",
"12.02."=>array("Abraham Lincoln (1809-1865), US-am. Politiker, Pr&auml;sident der USA 1861-1865", "Charles Darwin (1809-1882), brit. Naturforscher (&rArr;Evolutionstheorie)", "Franz I. (1768-1835), als Franz II. letzter r&ouml;m.-dt. Kaiser 1792-1806), Kaiser von &Ouml;sterreich ab 1804"),
"13.02."=>"",
"14.02."=>"",
"15.02."=>array("Ludwig XV. (1710-1774), K&ouml;nig von Frankreich 1715-1774", "Galileo Galilei (1564-1642), it. Mathematiker, Philosoph und Physiker"),
"16.02."=>"",
"17.02."=>"",
"18.02."=>"",
"19.02."=>"",
"20.02."=>"",
"21.02."=>"",
"22.02."=>"",
"23.02."=>"",
"24.02."=>"",
"25.02."=>"",
"26.02."=>"",
"27.02."=>"",
"28.02."=>"",
"29.02."=>"",
"01.03."=>"",
"02.03."=>"",
"03.03."=>"",
"04.03."=>"",
"05.03."=>"",
"06.03."=>"",
"07.03."=>"",
"08.03."=>"",
"09.03."=>"",
"10.03."=>"",
"11.03."=>"",
"12.03."=>"",
"13.03."=>"",
"14.03."=>"",
"15.03."=>"",
"16.03."=>"",
"17.03."=>"",
"18.03."=>"",
"19.03."=>"",
"20.03."=>"",
"21.03."=>"",
"22.03."=>"",
"23.03."=>"",
"24.03."=>"",
"25.03."=>"",
"26.03."=>"",
"27.03."=>"",
"28.03."=>"",
"29.03."=>"",
"30.03."=>"",
"31.03."=>"",
"01.04."=>"",
"02.04."=>"",
"03.04."=>"",
"04.04."=>"",
"05.04."=>"",
"06.04."=>"nichts",
"07.04."=>"",
"08.04."=>"",
"09.04."=>"",
"10.04."=>"",
"11.04."=>"",
"12.04."=>"",
"13.04."=>"",
"14.04."=>"",
"15.04."=>"",
"16.04."=>"",
"17.04."=>"",
"18.04."=>"",
"19.04."=>"",
"20.04."=>"",
"21.04."=>"",
"22.04."=>"",
"23.04."=>"",
"24.04."=>"",
"25.04."=>"",
"26.04."=>"",
"27.04."=>"",
"28.04."=>"",
"29.04."=>"",
"30.04."=>"",
"01.05."=>"",
"02.05."=>"",
"03.05."=>"",
"04.05."=>"",
"05.05."=>"",
"06.05."=>"",
"07.05."=>"",
"08.05."=>"",
"09.05."=>"",
"10.05."=>"",
"11.05."=>"",
"12.05."=>"",
"13.05."=>"",
"14.05."=>"",
"15.05."=>"",
"16.05."=>"",
"17.05."=>"",
"18.05."=>"",
"19.05."=>"",
"20.05."=>"",
"21.05."=>"",
"22.05."=>"",
"23.05."=>"",
"24.05."=>"",
"25.05."=>"",
"26.05."=>"",
"27.05."=>"",
"28.05."=>"",
"29.05."=>"",
"30.05."=>"",
"31.05."=>"",
"01.06."=>"",
"02.06."=>"",
"03.06."=>"",
"04.06."=>"",
"05.06."=>"",
"06.06."=>"",
"07.06."=>"",
"08.06."=>"",
"09.06."=>"",
"10.06."=>"",
"11.06."=>"",
"12.06."=>"",
"13.06."=>"",
"14.06."=>"",
"15.06."=>"",
"16.06."=>"",
"17.06."=>"",
"18.06."=>"",
"19.06."=>"",
"20.06."=>"",
"21.06."=>"",
"22.06."=>"",
"23.06."=>"",
"24.06."=>"",
"25.06."=>"",
"26.06."=>"",
"27.06."=>"",
"28.06."=>"",
"29.06."=>"",
"30.06."=>"",
"01.07."=>"",
"02.07."=>"",
"03.07."=>"",
"04.07."=>"",
"05.07."=>"",
"06.07."=>"",
"07.07."=>"",
"08.07."=>"",
"09.07."=>"",
"10.07."=>"",
"11.07."=>"",
"12.07."=>"",
"13.07."=>"",
"14.07."=>"",
"15.07."=>"",
"16.07."=>"",
"17.07."=>"",
"18.07."=>"",
"19.07."=>"",
"20.07."=>"",
"21.07."=>"",
"22.07."=>"",
"23.07."=>"",
"24.07."=>"",
"25.07."=>"",
"26.07."=>"",
"27.07."=>"",
"28.07."=>"",
"29.07."=>"",
"30.07."=>"",
"31.07."=>"",
"01.08."=>"",
"02.08."=>"",
"03.08."=>"",
"04.08."=>"",
"05.08."=>"",
"06.08."=>"",
"07.08."=>"",
"08.08."=>"",
"09.08."=>"",
"10.08."=>"",
"11.08."=>"",
"12.08."=>"",
"13.08."=>"",
"14.08."=>"",
"15.08."=>"",
"16.08."=>"",
"17.08."=>"",
"18.08."=>"",
"19.08."=>"",
"20.08."=>"",
"21.08."=>"",
"22.08."=>"",
"23.08."=>"",
"24.08."=>"",
"25.08."=>"",
"26.08."=>"",
"27.08."=>"",
"28.08."=>"",
"29.08."=>"",
"30.08."=>"",
"31.08."=>"",
"01.09."=>"",
"02.09."=>"",
"03.09."=>array("kein Eintrag", "auch kein anderer Eintrag"),
"04.09."=>"",
"05.09."=>"",
"06.09."=>"",
"07.09."=>"",
"08.09."=>"",
"09.09."=>"",
"10.09."=>"",
"11.09."=>"",
"12.09."=>"",
"13.09."=>"",
"14.09."=>"",
"15.09."=>"",
"16.09."=>"",
"17.09."=>"",
"18.09."=>"",
"19.09."=>"",
"20.09."=>"",
"21.09."=>"",
"22.09."=>"",
"23.09."=>"",
"24.09."=>"",
"25.09."=>"",
"26.09."=>"",
"27.09."=>"",
"28.09."=>"",
"29.09."=>"",
"30.09."=>"",
"01.10."=>"",
"02.10."=>"",
"03.10."=>"",
"04.10."=>"",
"05.10."=>"",
"06.10."=>"",
"07.10."=>"",
"08.10."=>"",
"09.10."=>"",
"10.10."=>"",
"11.10."=>"",
"12.10."=>"",
"13.10."=>"",
"14.10."=>"",
"15.10."=>"",
"16.10."=>"",
"17.10."=>"",
"18.10."=>"",
"19.10."=>"",
"20.10."=>"",
"21.10."=>"",
"22.10."=>"",
"23.10."=>"",
"24.10."=>"",
"25.10."=>"",
"26.10."=>"",
"27.10."=>"",
"28.10."=>"",
"29.10."=>"",
"30.10."=>"",
"31.10."=>"",
"01.11."=>"",
"02.11."=>"",
"03.11."=>"",
"04.11."=>"",
"05.11."=>"",
"06.11."=>"",
"07.11."=>"",
"08.11."=>"",
"09.11."=>"",
"10.11."=>"",
"11.11."=>"",
"12.11."=>"",
"13.11."=>"",
"14.11."=>"",
"15.11."=>"",
"16.11."=>"",
"17.11."=>"",
"18.11."=>"",
"19.11."=>"",
"20.11."=>"",
"21.11."=>"",
"22.11."=>"",
"23.11."=>"",
"24.11."=>"",
"25.11."=>"",
"26.11."=>"",
"27.11."=>"",
"28.11."=>"",
"29.11."=>"",
"30.11."=>"",
"01.12."=>"",
"02.12."=>"",
"03.12."=>"",
"04.12."=>"",
"05.12."=>"",
"06.12."=>"",
"07.12."=>"",
"08.12."=>"",
"09.12."=>"",
"10.12."=>"",
"11.12."=>"",
"12.12."=>"",
"13.12."=>"",
"14.12."=>"",
"15.12."=>"",
"16.12."=>"",
"17.12."=>"",
"18.12."=>"",
"19.12."=>"",
"20.12."=>"",
"21.12."=>"",
"22.12."=>"",
"23.12."=>"",
"24.12."=>"",
"25.12."=>"",
"26.12."=>"",
"27.12."=>"",
"28.12."=>"",
"29.12."=>"",
"30.12."=>"",
"31.12."=>""
);

echo $Geburtstage["04.02."];
echo "<br />";

foreach ($Geburtstage["04.02."] as $item) {
	echo "<b>04.02.:</b> ".$item."<br />";
}
echo "<br />";

foreach ($Geburtstage["08.02."] as $item) {
	echo "<b>08.02.:</b> ".$item."<br />";
}

echo "<br />";

foreach ($Geburtstage["12.02."] as $item) {
	echo "<b>12.02.:</b> ".$item."<br />";
}

echo "<br />";

foreach ($Geburtstage["15.02."] as $item) {
	echo "<b>15.02.:</b> ".$item."<br />";
}

echo "<br />";

var_dump($Geburtstage);

echo "<br />";

var_export($Geburtstage);

echo "<br />";

print_r ($Geburtstage);

echo "<br />";

echo "<big><strong>".$heute.":</strong></big>";
if ($heute != '') {
foreach ($Geburtstage[$heute] as $item) {
	echo "<ul><li>&nbsp; &nbsp;".$item."</li></ul><br />";
}
}

?>

SWFP
 

netbandit

Aktives Mitglied

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Ich glaube Du hast das mit dem Array sein oder nicht sein nicht ganz verstanden...

PHP:
"02.01."=>"",
In diesem Fall ist nur $Geburtstage ein Array aber nicht $Geburtstage["02.01."], letzteres ist ein String (wenn auch leer) und kann im foreach nicht durlaufen werden
PHP:
"04.02."=>array("Dietrich Bonnhoeffer (1906-1945), dt. ev. Theologe (Bekennende Kirche); Widerstandsk&auml;mpfer gegen des NS-Regime", "Charles Lindbergh (1902-1974), Us-am. Pilot (erster Nonstop-Flug &uuml;ber den Atlantik)", "Ludwig Erhard (1887-1977), dt. CDU-Politiker, Wirtschaftsminister (1949-1963), 2. Bundeskanzler (1949-1963)", "Friedrich Ebert (1871-1925), dt. SPD-Politiker, Reichpr&auml;sident (1919-1925, Weimarer Republik)"),
In diesem Fall ist $Geburtstage ein Array und $Geburtstage["04.02."], beide können im foreach durchlaufen werden

foreach funktioniert nur mit arrays und objekte

Grüße
 

Duddle

Posting-Frequenz: 14µHz

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Du lässt dir doch schon $heute in großen, fetten Lettern ausgeben. Dann vergleiche doch wenigstens diese Ausgabe exakt(!!!) mit dem erwarteten Schlüssel.


Duddle
 

SWFP

SWFP Mitglied

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Das heißt, ich muss bei ALLEN Tagen ein Array machen, also bei den leeren ein leeres?

Grüße
 

Duddle

Posting-Frequenz: 14µHz

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Nein, du musst nur bevor du darauf zugreifst sicherstellen, dass das was du als Array verarbeiten willst auch tatsächlich ein Array ist. Das ist grundlegende Fehlerbehandlung.


Duddle
 

SWFP

SWFP Mitglied

AW: Mehrdimensionales Array mit foreach und Variablen ausgeben

Das meiste wäre ja ein Array, aber es gibt auch Tage an denen nur eine Sache passiert ist, d.h. es gäbe dort nur einen einfachen String.

SWFP
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben