funkervogt
Goto Top

Aus Arrays neue Arrays erzeugen!

Hallo Gemeinde,

ich hoffe Ihr könnt mir bei meiner Problematik helfen und meinen kleinen gordischen Knoten im Kopf lösen.

Die Situation:
Ich habe eine undefinierte Anzahl Arrays $ZP mit einer undefinierten Anzahl von Elementen!

z.B.
Array ( => A1 [1] => A2 [2] => A3 [3] => A4 )
Array ( => B1 [1] => B2 [2] => B3 [3] => B4 )
.
.
Array ( => K1 [1] => K2 [2] => K3 [3] => K4 )

die Ausgabe erzeuge ich mit folgendem Code:
$arr = sind die genannten Arrays

for ($k =0; $k < count($arr); $k++)
    {
        print_r ($arr[$k]);
        echo "</br>";  
    }

Was ich möchte ist, dass die Arraywerte ausgelesen und in neuen Arrays anders sortiert ausgegeben werden:
Ziel:

Array ( => A1 [1] => B1 [2] => K1 )
Array ( => A2 [1] => B2 [2] => K2 )
Array ( => A3 [1] => B3 [2] => K3 )
Array ( => A4 [1] => B4 [2] => K4 )


Danke im voraus!


Gruss

Uwe

Content-ID: 228427

Url: https://administrator.de/contentid/228427

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

marinux
marinux 01.02.2014 um 14:01:43 Uhr
Goto Top
colinardo
Lösung colinardo 01.02.2014, aktualisiert am 02.02.2014 um 13:52:40 Uhr
Goto Top
Hallo Uwe,
Beispiel:
$arr = array(array("A1","A2","A3","A4"),array("B1","B2","B3","B4"),array("K1","K2","K3","K4"));  
$new_arr = array();
foreach ($arr as $key => $subarr) {
	foreach ($subarr as $subkey => $subvalue) {
		$new_arr[$subkey][$key] = $subvalue;
	}
}
print_r($new_arr);
Grüße Uwe
FunkerVogt
FunkerVogt 01.02.2014 um 14:43:40 Uhr
Goto Top
Danke Euch beide... Eure Vorschläge beziehen sich doch multidimensionale Arrays?!?!?!?
hab ich ja nicht.

Muss erst einmal bissl rumprobieren wie ich das in meinem Fall hinbekomme!
colinardo
colinardo 01.02.2014 aktualisiert um 15:01:02 Uhr
Goto Top
Zitat von @FunkerVogt:
Eure Vorschläge beziehen sich doch multidimensionale Arrays?!?!?!?
hab ich ja nicht.
dann beschreibe deine Situation bitte genauer.:
Ich habe eine undefinierte Anzahl Arrays $ZP mit einer undefinierten Anzahl von Elementen!
worin oder wie sind diese definiert ?
Das Vorgehen ist aber immer ähnlich mit zwei verschachtelte Schleifen.
Guenni
Lösung Guenni 01.02.2014, aktualisiert am 02.02.2014 um 13:53:08 Uhr
Goto Top
Zitat von @FunkerVogt:

Danke Euch beide... Eure Vorschläge beziehen sich doch multidimensionale Arrays?!?!?!?
hab ich ja nicht.

Muss erst einmal bissl rumprobieren wie ich das in meinem Fall hinbekomme!

Hi FunkerVogt,

wenn $arr deine Arrays sind, die du mit deinem Code ausgibst, dann hast du doch ein multidimensionales Array,

und somit ist die Definition von colinardo . . .

$arr = array(array("A1","A2","A3","A4"),array("B1","B2","B3","B4"),array("K1","K2","K3","K4"));  

. . . ja wohl richtig. Du müsstest, anstatt mit print_r($new_arr) das gesamte Array auszugeben, die einzelnen Arrays aus $new_arr ausgeben.

$new_arr = array();
foreach ($arr as $key => $subarr) {
	foreach ($subarr as $subkey => $subvalue) {
		$new_arr[$subkey][$key] = $subvalue;
	}
}
foreach($new_arr as $arr){
 print_r($arr);echo "<br>";  
}

Ergebnis:

Array ( => A1 [1] => B1 [2] => K1 )
Array ( => A2 [1] => B2 [2] => K2 )
Array ( => A3 [1] => B3 [2] => K3 )
Array ( => A4 [1] => B4 [2] => K4 )

Was dann wohl deinem Wunschergebnis (siehe oben) entspricht.

Gruss
Günni
FunkerVogt
FunkerVogt 01.02.2014 aktualisiert um 20:30:58 Uhr
Goto Top
mnjaaa! Also:
Grundgerüst ist:
Ich rufe innerhalb einer Schleife $ZP ($ZP kann zwischen 1 und 15 liegen) eine SQL Abfrage
auf, die mir Werte aus der Datenbank liefert, welche zwischen (per $_GET übermittelte) 2 Datumsangaben liegen.
In diesem Sinne ist $ZP und auch die Anzahl der Werte in der Anzahl nicht genau definiert!

Innerhalb dieser Schleife ($ZP 1 bis X) weise ich die Werte aus der DB einem jeweilig zu $ZP gehöriges Array zu.
Ich habe also kein mehrdimensionales Array sondern X Arrays mit den Werten aus der DB.

also BEISPIELSWEISE:

$ZP1 = Array ( => A1 [1] => A2 [2] => A3 [3] => A4 )
$ZP2 = Array ( => B1 [1] => B2 [2] => B3 [3] => B4 )
.
.
$ZP5 = Array ( => K1 [1] => K2 [2] => K3 [3] => K4 )

deswegen ist das ja so "tricky"!
colinardo
Lösung colinardo 01.02.2014, aktualisiert am 02.02.2014 um 13:53:03 Uhr
Goto Top
Zitat von @FunkerVogt:
Ich habe also kein mehrdimensionales Array sondern X Arrays mit den Werten aus der DB.
für mich hört sich das nach einer umständlichen Lösung an.
Zur Info, deine Arrays kannst du ganz einfach in deiner Schleife einem neuen Array mit array_push() hinzufügen und dieses dann zum Schluss mit der obigen Transpose-Methode behandeln und wenn du es brauchst auch wieder zurückwandeln (siehe Günni), bzw. wieder deinen hart gecodeten Arrays zuweisen.
Ich sehe da kein Problem, sorry.

Grüße Uwe
FunkerVogt
FunkerVogt 02.02.2014 um 13:52:12 Uhr
Goto Top
Supi! Jetzt funktioniert es!

Das ich auf X Arrays statt auf Mehrdimensionale Arrays gesetzt habe, lag daran,
dass ich es leichter fand die Arrays später mit Schleifen neu zu sortieren.
Da kannte ich aber diese Methode noch nicht!


Ich danke Euch vielmals für Eure Hilfe


Gruss

Uwe


*gelöst'