mehrere indizierte Array zu einem Array fügen

Maniac

Erfahrenes Mitglied
Moin,
Ich schaffe es irgendwie nicht mehrere Arrays so zu strukturieren, damit ich mit ihnen weiterarbeiten kann.
ich habe folgende Arrays:

$id,
$name,
$wert1,
$wert2,
$wert3,

Diese Arrays sind richtig geordnet und die Keys stimmen überein. So sieht es momentan aus:

PHP:
$array = array(
			0=>$id,
			1=>$name,
			2=>$wert1,
			3=>$wert2,
			4=>$wert3
			);

Code:
Array
(
    [0] => Array   // $id
        (
            [0] => 7    
            [1] => 9
        )

    [1] => Array    // $name
        (
            [0] => name1
            [1] => name2
        )

    [2] => Array    // $wert1
        (
            [0] => 1
            [1] => 
        )

    [3] => Array    // $wert2
        (
            [0] => 
            [1] => 2
        )

    [4] => Array    // $wert3
        (
            [0] => 
            [1] => 
        )

)

wie schaff ich es nun die alle Daten mit dem Key 0 zusammenzupacken und die 1er zu den 1ern.... usw..

also so:

Code:
Array
(
    [0] => Array  
        (
            [0] => 7    
            [1] => name
            [2] => wert1
            [3] => wert2
            [4] => wert3
        )

    [1] => Array    
        (
            [0] => 9   
            [1] => name
            [2] => wert1
            [3] => wert2
            [4] => wert3

       )
)
 
Hi, wenn ich das richtig verstehe, dann hast du ja die einzelnen Arrays und möchtest nun ein Array erstellen, das alle Daten enthält. Ich würde das einfach so lösen:
PHP:
$array = array();

for($count = count($id), $i = 0; $i < $count; $i++)
{
  $array[] = array
  (
    $id[$i],
    $name[$i],
    $wert1[$i],
    $wert2[$i],
    $wert3[$i]
  );
}
 
Nun hab ich noch ein Problem mit einem anderen Array.
Struktur ist:
Code:
Array
(
    [0] => Array
        (
            [0] => 4
            [id] => 4
            [1] => 1
            [spieltagNr] => 1
            [2] => 4
            [spielnr] => 4
            [3] => 6
            [heim] => Die Schuldigen
            [4] => 3
            [gast] => Teenies und Opa
            [5] => Dienstag
            [spieltag] => Dienstag
            [6] => 1
            [liga_id] => 1
            [7] => 2008-12-01
            [datum] => 2008-12-01
            [8] => 0
            [entry] => 0
            [9] => 0
            [heimpunkte] => 0
            [10] => 0
            [gastpunkte] => 0
            [11] => 0
            [heimspiele] => 0
            [12] => 0
            [gastspiele] => 0
            [13] => 
            [einspruch] => 
            [14] => Die Schuldigen
            [15] => Ins Valentin
            [ort] => Ins Valentin
            [16] => Teenies und Opa
        )

    [1] => Array
        (
            [0] => 1
            [id] => 1
            [1] => 1
            [spieltagNr] => 1
            [2] => 1
            [spielnr] => 1
            [3] => 7
            [heim] => Drei Rosen
            [4] => 2
            [gast] => Overclocks
            [5] => Mittwoch
            [spieltag] => Mittwoch
            [6] => 1
            [liga_id] => 1
            [7] => 2008-12-02
            [datum] => 2008-12-02
            [8] => 1
            [entry] => 1
            [9] => 2
            [heimpunkte] => 2
            [10] => 0
            [gastpunkte] => 0
            [11] => 14
            [heimspiele] => 14
            [12] => 4
            [gastspiele] => 4
            [13] => 
            [einspruch] => 
            [14] => Drei Rosen
            [15] => Bistro Drei Rosen
            [ort] => Bistro Drei Rosen
            [16] => Overclocks
        )

Das geht bis zum Key 44

und:

Code:
Array
(
    [0] => 31
    [1] => 32
    [2] => 32
    [3] => 33
    [4] => 33
    [5] => 37
    [6] => 37
    [7] => 39
    [8] => 39
    [9] => 40
    [10] => 45
    [11] => 46
    [12] => 46
    [13] => 47
    [14] => 47
    [15] => 51
    [16] => 51
    [17] => 53
    [18] => 53
    [19] => 54
    [20] => 58
    [21] => 60
    [22] => 60
    [23] => 61
    [24] => 61
    [25] => 65
    [26] => 66
    [27] => 67
    [28] => 67
    [29] => 68
    [30] => 72
    [31] => 74
    [32] => 74
    [33] => 75
    [34] => 75
    [35] => 79
    [36] => 80
    [37] => 81
    [38] => 81
    [39] => 82
    [40] => 86
    [41] => 86
    [42] => 88
    [43] => 88
    [44] => 89
)

Jetzt müssen die daten aus dem 2.Array in das erste eingefügt werden. die Keys stimmen auch überein. Also quasi so wie hier sollte es sein wie der Index [17]

Code:
Array
(
    [0] => Array
        (
            [0] => 4
            [id] => 4
            [1] => 1
            [spieltagNr] => 1
            [2] => 4
            [spielnr] => 4
            [3] => 6
            [heim] => Die Schuldigen
            [4] => 3
            [gast] => Teenies und Opa
            [5] => Dienstag
            [spieltag] => Dienstag
            [6] => 1
            [liga_id] => 1
            [7] => 2008-12-01
            [datum] => 2008-12-01
            [8] => 0
            [entry] => 0
            [9] => 0
            [heimpunkte] => 0
            [10] => 0
            [gastpunkte] => 0
            [11] => 0
            [heimspiele] => 0
            [12] => 0
            [gastspiele] => 0
            [13] => 
            [einspruch] => 
            [14] => Die Schuldigen
            [15] => Ins Valentin
            [ort] => Ins Valentin
            [16] => Teenies und Opa
            [17] => 31
        )

    [1] => Array
        (
            [0] => 1
            [id] => 1
            [1] => 1
            [spieltagNr] => 1
            [2] => 1
            [spielnr] => 1
            [3] => 7
            [heim] => Drei Rosen
            [4] => 2
            [gast] => Overclocks
            [5] => Mittwoch
            [spieltag] => Mittwoch
            [6] => 1
            [liga_id] => 1
            [7] => 2008-12-02
            [datum] => 2008-12-02
            [8] => 1
            [entry] => 1
            [9] => 2
            [heimpunkte] => 2
            [10] => 0
            [gastpunkte] => 0
            [11] => 14
            [heimspiele] => 14
            [12] => 4
            [gastspiele] => 4
            [13] => 
            [einspruch] => 
            [14] => Drei Rosen
            [15] => Bistro Drei Rosen
            [ort] => Bistro Drei Rosen
            [16] => Overclocks
            [17] => 32
        )
 
Ähm, wie wärs einfach so:
PHP:
for($count = count($array1), $i = 0; $i < $count; $i++)
{
  $array1[$i][] = $array2[$i];
}
 
Natürlich wie jeder Tipp von dir funktioniert es perfekt.
Ich komm leider nur immer nicht dahinter wie ich die Arrays richtig auflöse, hinzufüge usw..
Dieses Beispiel hat mich wieder ein Stück nähere gebracht, danke :)
 
Ich möchte kein neues Thema aufmachen, deshalb poste ich das hier nochmal.
Hat ja schliesslich auch mit dem selben Thema zu tun, nur wirds ein bissl komplizierter.

Ich habe wieder 2 Arrays, eins mit den ganzen Werten einer Mannschaft und eins mit Higscores. Da diese eine unterschiedliche Anzahl haben hab ich mir folgendes Script überlegt:
PHP:
$db->query("SELECT * FROM spieler_score WHERE spielid=".intval($_GET['game']), 1);
		while($res = $db->fetch_array())
		{
			$score[] = $res;
		}
	    
		$heimteam = players($heim);
	
		
		for($count = count($heimteam), $i = 0; $i < $count; $i++)
		{
			if($heimteam[$i][ID] == $score[$i][pid])
			{
				$heimteam[$i][hf] = $score[$i]['highfinish'];
				$heimteam[$i][v171] = $score[$i]['v171'];
				$heimteam[$i][v180] = $score[$i]['v180'];
				$heimteam[$i][pid] = $score[$i]['pid'];
			}
			else
			{
				$heimteam[$i][hf] = "0";
				$heimteam[$i][v171] = "0";
				$heimteam[$i][v180] = "0";
				$heimteam[$i][pid] = $score[$i]['pid'];
			}
		} 
		echo "<pre>";
		echo print_r($heimteam);
		echo "</pre>";

Dies sollte bewirken, das wenn die ID aus dem 1. Array mit der pid des 2. Arrays übereinstimmt diese werte den zugehörigen ID's zu übertragen, ansonsten die Werte 0 eintragen.

Das funktioniert leider nur teilweise bis gar nicht.
Es werden nur die ersten beiden Einträge des 1. Arrays mit dem 2. verglichen.

Wie müsste ich das machen das wenn die IDS übereinstimmen, die einträge eingetragen werden?
Hier mal die Ausgabe der ersten 3 Elemente:

Code:
Array
(
    [0] => Array
        (
            [0] => 229
            [ID] => 229
            [1] => 
            [name] => 
            [2] => Dominik
            [vorname] => Dominik
            [3] => 7
            [team_id] => 7
            [4] => 2
            [liga_id] => 2
            [5] => 
            [strasse] => 
            [6] => 86165
            [plz] => 86165
            [7] => Augsburg
            [ort] => Augsburg
            [8] => 
            [tel] => 
            [9] => 
            [mobil] => 
            [10] => 
            [email] => 
            [11] => Nein
            [captain] => Nein
            [12] => 2
            [nachmeldung] => 2
            [13] => 1
            [aktiv] => 1
            [hf] => 0
            [v171] => 0
            [v180] => 0
            [pid] => 48
        )

    [1] => Array
        (
            [0] => 159
            [ID] => 159
            [1] => 
            [name] => 
            [2] => 
            [vorname] => 
            [3] => 7
            [team_id] => 7
            [4] => 2
            [liga_id] => 2
            [5] => 
            [strasse] => 
            [6] => 86167
            [plz] => 86167
            [7] => Augsburg
            [ort] => Augsburg
            [8] => 
            [tel] => 
            [9] => 
            [mobil] =>
            [10] => 
            [email] => 
            [11] => Nein
            [captain] => Nein
            [12] => 2
            [nachmeldung] => 2
            [13] => 1
            [aktiv] => 1
            [hf] => 117
            [v171] => 1
            [v180] => 0
            [pid] => 159
        )

    [2] => Array
        (
            [0] => 258
            [ID] => 258
            [1] => 
            [name] => 
            [2] => 
            [vorname] => 
            [3] => 7
            [team_id] => 7
            [4] => 2
            [liga_id] => 2
            [5] => 
            [strasse] => 
            [6] => 86830
            [plz] => 86830
            [7] => Schwabmünchen
            [ort] => Schwabmünchen
            [8] => 
            [tel] => 
            [9] => 
            [mobil] => 
            [10] => 
            [email] => 
            [11] => Nein
            [captain] => Nein
            [12] => 1
            [nachmeldung] => 1
            [13] => 1
            [aktiv] => 1
            [hf] => 0
            [v171] => 0
            [v180] => 0
            [pid] => 
        )
)
 
so würde ich die zusammenfügen

allerdings frage ich mich wo du die pid herzauberst wenn du kein score element hast

gruß

katosan


PHP:
$add_fields = array (
		'hf', 
		'v171', 
		'v180', 
		'pid' );

$db->query("SELECT highfinish as hf,v171,v180,pid FROM spieler_score WHERE spielid=" . intval($_GET ['game']), 1);
while ( $res = $db->fetch_array() ) {
	
	$score [$res ['pid']] = $res;
}

$heimteam = players($heim);

foreach ( $heimteam as $key => $value ) {
	
	if ( array_key_exists($value ['ID'], $score) ) {
		
		foreach ( $add_fields as $field ) {
			
			$heimteam [$key] [$field] = $score [$value['ID']] [$field];
		
		}
	
	} else {
		
		foreach ( $add_fields as $field ) {
			
			$heimteam [$key] [$field] = 0;
		
		}
	}
}
echo "<pre>";
echo print_r($heimteam);
echo "</pre>";
 
Zuletzt bearbeitet:
Das funktioniert leider auch nicht, da "array_key_exists()" nur nach dem Key sucht und nicht nach dem Wert. Und da "$value[ID]" ein Wert ist, gibt es false zurück. Aber ich glaube es ist schon der richtige Weg.
 
Das funktioniert leider auch nicht, da "array_key_exists()" nur nach dem Key sucht und nicht nach dem Wert. Und da "$value[ID]" ein Wert ist, gibt es false zurück. Aber ich glaube es ist schon der richtige Weg.

nochmal bitte

$score ist ein assozialtives Array mit der pid als Key:

PHP:
$score [$res ['pid']] = $res;

und die pid aus score soll equivalent zu $heimteam['ID'] sein sagt zumindestens dein IF

if($heimteam[$i][ID] == $score[$i][pid])

also kann ich doch in score nach dem schlüssel "pid" suchen


btw. mit

mysql_fetch_assoc()

kannst du dir die ganzen doppelten nennungen im Result sparen
 
Zurück