Mehrdim. Array richtig auslesen zum verarbeiten
sashybear
- php
Hallo alle miteinander...
ich habe ein mehrdimensionales Array und folgendes Problem...
Das Array:
[subnavlink] => Array
(
[0] => Array
(
[Portrait] => Kurzprofil
)
[1] => Array
(
[Portrait] => Auf einen Blick
)
[2] => Array
(
[Management] => Geschäftsführung
)
[3] => Array
(
[Management] => Aufsichtsrat
)
[4] => Array
(
[Objekte] => Referenzobjekte
)
[5] => Array
(
[Objekte] => Angebote zum Kauf
)
[6] => Array
(
[Objekte] => Angebote zur Miete
)
[7] => Array
(
[News] => Aktuelle Pressemitteilungen
)
[8] => Array
(
[News] => Archiv
)
)
Nun würde ich gerne alle Inhalte mit identischen Keys (z.B. 'Portrait' oder 'Objekte') mit implode in strings zusammenfassen um sie anschliessend weiter verabeiten zu können. Ich weiss leider nicht, wie ich meine Schleife(n) aufbauen soll? :(
Könnt Ihr mir helfen?
Danke
Sascha
Ich habe noch vergessen das es auch möglich wäre daraus ein eindimensionales Array zu erzeugen, wenn das die Sache erleichtern sollte...
so also:
[subnavlink] => Array
(
[Portrait] => Kurzprofil
[Portrait] => Auf einen Blick
....
probiers mal mit
$neuesArray = array();
for($i=0;$i<count($subnavlink);$i++)
{
foreach($subnavlink[$i] as $key => $value)
$neuesArray[$key][] = $value;
}
foreach($neuesArray as $key => $value)
print $key . ": " . implode(",", $neuesArray[$key]) . "<br />";
das sollte eigentlich funktionieren.
Besser wäre es aber das Array gleich so aufzubaun.
Also
[subnavlink] => Array
[Porträt] => Array
[0] => Kurzprofil
[1] => Auf einen Blick
[Management] => Array
[0] => Geschäftsführung
[1] => Aufsichtsrat
usw.
Grüße
Bezkeroon
Hallo alle miteinander...
ich habe ein mehrdimensionales Array und folgendes Problem...
Das Array:
[subnavlink] => Array
(
[0] => Array
(
[Portrait] => Kurzprofil
)[1] => Array
(
[Portrait] => Auf einen Blick
)[2] => Array
(
[Management] => Geschäftsführung
)[3] => Array
(
[Management] => Aufsichtsrat
)[4] => Array
(
[Objekte] => Referenzobjekte
)[5] => Array
(
[Objekte] => Angebote zum Kauf
)[6] => Array
(
[Objekte] => Angebote zur Miete
)[7] => Array
(
[News] => Aktuelle Pressemitteilungen
)[8] => Array
(
[News] => Archiv
))
Nun würde ich gerne alle Inhalte mit identischen Keys (z.B. 'Portrait' oder 'Objekte') mit implode in strings zusammenfassen um sie anschliessend weiter verabeiten zu können. Ich weiss leider nicht, wie ich meine Schleife(n) aufbauen soll? :(
Könnt Ihr mir helfen?
Danke
Sascha
Hi...
danke erstmal für Deine schnelle Anwort und den Lösungsvorschlag.
So ähnlich hatte ich mir das eigentlich auch vorgestellt. Die "for"
schleife hatte ich auch schon mit einer "foreach" verschachtelt, das
hatte mich aber nicht weiter gebracht weil ich die Sache mit dem
leeren Array am Anfang nicht berücksichtigt hatte.
Naja, also bei Deinem Beispiel bekomme ich jedenfalls folgende Ausgabe:
Portrait: Kurzprofil
Portrait: Kurzprofil;Auf einen Blick
Portrait: Kurzprofil;Auf einen Blick
Management: Geschäftsführung
Portrait: Kurzprofil;Auf einen Blick
Management: Geschäftsführung;Aufsichtsrat
Portrait: Kurzprofil;Auf einen Blick
Management: Geschäftsführung;Aufsichtsrat
Objekte: Referenzobjekte
Portrait: Kurzprofil;Auf einen Blick
Management: Geschäftsführung;Aufsichtsrat
Objekte: Referenzobjekte;Angebote zum Kauf
Portrait: Kurzprofil;Auf einen Blick
Management: Geschäftsführung;Aufsichtsrat
Objekte: Referenzobjekte;Angebote zum Kauf;Angebote zur Miete
Portrait: Kurzprofil;Auf einen Blick
Management: Geschäftsführung;Aufsichtsrat
Objekte: Referenzobjekte;Angebote zum Kauf;Angebote zur Miete
News: Aktuelle Pressemitteilungen
Portrait: Kurzprofil;Auf einen Blick
Management: Geschäftsführung;Aufsichtsrat
Objekte: Referenzobjekte;Angebote zum Kauf;Angebote zur Miete
News: Aktuelle Pressemitteilungen;Archiv
Also schon FAST das was ich wollte. Hast Du dazu evtl. noch einen
Verbesserungsvorschlag?
Gut wäre es wenn ich die einzelnen Begriffe die ausgegeben werden
(also: Kurzprofil,Geschäftsführung,...) weg bekäme, und NUR die
Strings mit dem Trenner ";" übrig blieben!?
Danke für Deine/ Eure Hilfe
Gruß
Sascha
probiers mal mit
$neuesArray = array();
for($i=0;$i<count($subnavlink);$i++)
{
foreach($subnavlink[$i] as $key => $value)
$neuesArray[$key][] = $value;
}foreach($neuesArray as $key => $value)
print $key . ": " . implode(",", $neuesArray[$key]) . "<br />";das sollte eigentlich funktionieren.
auweh, das kommt davon, wenn man es ned testet ;)
probier mal statt
foreach($neuesArray as $key => $value)
print $key . ": " . implode(",", $neuesArray[$key]) . "<br />";
foreach(array_keys($neuesArray) as $key)
print implode(",", $neuesArray[$key]) . "<br />";
Grüße
Bezkeroon
Hmm.. ne, das löst das Problem auch nicht!?
Ausgabe ist jetzt fast wie vorher:
Kurzprofil
Kurzprofil;Auf einen Blick
Kurzprofil;Auf einen Blick
Geschäftsführung
Kurzprofil;Auf einen Blick
Geschäftsführung;Aufsichtsrat
Kurzprofil;Auf einen Blick
Geschäftsführung;Aufsichtsrat
Referenzobjekte
Kurzprofil;Auf einen Blick
Geschäftsführung;Aufsichtsrat
Referenzobjekte;Angebote zum Kauf
Kurzprofil;Auf einen Blick
Geschäftsführung;Aufsichtsrat
Referenzobjekte;Angebote zum Kauf;Angebote zur Miete
Kurzprofil;Auf einen Blick
Geschäftsführung;Aufsichtsrat
Referenzobjekte;Angebote zum Kauf;Angebote zur Miete
Aktuelle Pressemitteilungen
Kurzprofil;Auf einen Blick
Geschäftsführung;Aufsichtsrat
Referenzobjekte;Angebote zum Kauf;Angebote zur Miete
Aktuelle Pressemitteilungen;Archiv
Gruß
Sascha
auweh, das kommt davon, wenn man es ned testet ;)
probier mal statt
foreach($neuesArray as $key => $value)
print $key . ": " . implode(",", $neuesArray[$key]) . "<br />";foreach(array_keys($neuesArray) as $key)
print implode(",", $neuesArray[$key]) . "<br />";Grüße
Bezkeroon
dann muss Dein Array irgendwie anders aufgebaut sein.
Wenns passt gehen beide Varianten - die mit array_keys und die davor.
Hab grad folgendes getestet und gibt genau die Ausgabe, die Du willst:
<?
$subnavlink[0]["Portrait"] = "Kurzprofil";
$subnavlink[1]["Portrait"] = "Auf einen Blick";
$subnavlink[2]["Management"] = "Geschäftsführung";
$subnavlink[3]["Management"] = "Aufsichtsrat";
$neuesArray = array();
for($i=0;$i<count($subnavlink);$i++)
{
foreach($subnavlink[$i] as $key => $value)
$neuesArray[$key][] = $value;
}
foreach($neuesArray as $key => $value)
print $key . ": " . implode(", ", $neuesArray[$key]) . "<br />";
?>
Ausgabe ist dann:
Portrait: Kurzprofil, Auf einen Blick
Management: Geschäftsführung, Aufsichtsrat
Hi...
also vielleicht habe ich auch einen Denkknoten beim anlegen meines
Arrays gemacht. Der Array baut sich durch versch. $_POST Variablen auf
die mit Hilfe eines INPUT Elementes auf der Seite davor erstellt
werden.
Das Input Feld selber sieht so aus:
<input type='text' name='subnavlink[][$_link]' class='textarea' id='subnavlink[][$_link]' maxlength='27' style='width: 180px' value='$elem'>
Wobei in "$_link" ebend "Portrait,Objekte,..." stehen, und in $elem
dann die einzelnen Elemente (z.B. Kurzprofil,Auf einen Blick...)
Hast Du denn vielleicht eine Idee wie ich das besser aufbauen könnte
damit ich die Elemente zuordnen kann?
Sprich: "Portrait=Kurzprofil", "Portrait=Auf einen Blick" etc.
Gruß
Sascha
dann muss Dein Array irgendwie anders aufgebaut sein.
Wenns passt gehen beide Varianten - die mit array_keys und die davor.
Hab grad folgendes getestet und gibt genau die Ausgabe, die Du willst:<?
$subnavlink[0]["Portrait"] = "Kurzprofil";
$subnavlink[1]["Portrait"] = "Auf einen Blick";
$subnavlink[2]["Management"] = "Geschäftsführung";
$subnavlink[3]["Management"] = "Aufsichtsrat";
$neuesArray = array();
for($i=0;$i<count($subnavlink);$i++)
{
foreach($subnavlink[$i] as $key => $value)
$neuesArray[$key][] = $value;
}foreach($neuesArray as $key => $value)
print $key . ": " . implode(", ", $neuesArray[$key]) . "<br />";?>
Ausgabe ist dann:
Portrait: Kurzprofil, Auf einen Blick
Management: Geschäftsführung, Aufsichtsrat
hmmm, mach mal aus
<input type='text' name='subnavlink[][$_link]' class='textarea' id='subnavlink[][$_link]' maxlength='27' style='width: 180px' value='$elem'>
das hier:
<input type='text' name='subnavlink[$_link][]' class='textarea' id='subnavlink[$_link][]' maxlength='27' style='width: 180px' value='$elem'>
dann solltest Du die gewünschte Ausgabe wie folgt erhalten:
foreach($_POST["subnavlink"] as $key => $value)
print $key . ": " . implode(", ", $neuesArray[$key]) . "<br />";
Grüße
Bezkeroon
oha, muss natürlich statt
foreach($_POST["subnavlink"] as $key => $value)
print $key . ": " . implode(", ", $neuesArray[$key]) . "<br />";
so heissen:
foreach($_POST["subnavlink"] as $key => $value)
print $key . ": " . implode(", ", $_POST["subnavlink"][$key]) . "<br />";
YES!!!! Das war es.. mann was für ein Knoten! Hehe..
Danke Dir fürs entwirren...
Gruß
Sascha
oha, muss natürlich statt
foreach($_POST["subnavlink"] as $key => $value)
print $key . ": " . implode(", ", $neuesArray[$key]) . "<br />";so heissen:
foreach($_POST["subnavlink"] as $key => $value)
print $key . ": " . implode(", ", $_POST["subnavlink"][$key]) . "<br />";