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-Key: 228427

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

Printed on: April 25, 2024 at 15:04 o'clock

Member: marinux
marinux Feb 01, 2014 at 13:01:43 (UTC)
Goto Top
Member: colinardo
Solution colinardo Feb 01, 2014, updated at Feb 02, 2014 at 12:52:40 (UTC)
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
Member: FunkerVogt
FunkerVogt Feb 01, 2014 at 13:43:40 (UTC)
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!
Member: colinardo
colinardo Feb 01, 2014 updated at 14:01:02 (UTC)
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.
Member: Guenni
Solution Guenni Feb 01, 2014, updated at Feb 02, 2014 at 12:53:08 (UTC)
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
Member: FunkerVogt
FunkerVogt Feb 01, 2014 updated at 19:30:58 (UTC)
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"!
Member: colinardo
Solution colinardo Feb 01, 2014, updated at Feb 02, 2014 at 12:53:03 (UTC)
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
Member: FunkerVogt
FunkerVogt Feb 02, 2014 at 12:52:12 (UTC)
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'