# MySQL -> Mehrdimensionales Array



## MastaDaDesasta (27. Juni 2006)

Hallo, 
ich habe schon im Forum gesucht, aber irgendwie nicht so recht eine passende Antwort gefunden. Ich habe eine MySQL Datenbank, dort möchte ich alle Werte, die mit 
$ergebnis = mysql_query("Select * from blabla); 
aufgerufen werden. Hierbei gibt es mehrere Ergebnisse. Mit fetch_array kann man aber immer nur eines rausholen. Für meine Anwendung bräuchte ich aber unbedingt ein mehrdimensionales Array, was mir die Ergebnisse à la $result = array['Spaltenname']['Zeile'] ausgibt. Gibt es da eine einfache Lösung, die genau das macht?

Gruss MastaDaDesasta


----------



## Gumbo (27. Juni 2006)

Mach dir doch solch ein Array selbst:
	
	
	



```
$array = array();
while( $row = mysql_fetch_assoc($result) ) {
	foreach( $row as $key => $value ) {
		if( !isset($array[$key]) ) {
			$array[$key] = array();
		}
		$array[$key][] = $value;
	}
}
// print_r($array);
```


----------



## MastaDaDesasta (14. Juli 2006)

Danke, das hat geholfen. Aber noch eine Frage: Ich habe in einem Array jetzt mehrere gleiche Werte gespeichert. Und jetzt möchte ich anhand eines gegebenen Strings überprüfen, wie oft der genau in dem Array vorkommt. Gibt es dafür eine Funktion, weil array_search gibt immer nur den ersten Wert aus, also kommt bei count immer 1 heraus oder? Gibt es da eine Möglichkeit die Anzahl festzustellen? Ich hoff ihr versteht mein Problem. Hab schon überall gesucht aber auf nichts verwendbares gestoßen.


Gruss OBI


----------



## MastaDaDesasta (16. Juli 2006)

Ich möchte quasi mein Array aufsplitten:

$data[] = array('fach_id' => 'm', 'fach' => M1);
$data[] = array('fach_id' => 'e', 'fach' => E3);
$data[] = array('fach_id' => 'f', 'fach' => F1);
$data[] = array('fach_id' => 'm', 'fach' => M2);
$data[] = array('fach_id' => 'm', 'fach' => m1);
$data[] = array('fach_id' => 'e', 'fach' => E1);

Dieses Array möchte ich aufsplitten in 3 verschiedene Arrays, nämlich immer nach der 'fach_id' zusammengefasst;
$data1[] = array('fach_id' => 'm', 'fach' => M1);
$data1[] = array('fach_id' => 'm', 'fach' => M2);
$data1[] = array('fach_id' => 'm', 'fach' => m1);

$data2[] = array('fach_id' => 'f', 'fach' => F1);

$data3[] = array('fach_id' => 'e', 'fach' => E3);
$data3[] = array('fach_id' => 'e', 'fach' => E1);

Gibt es hierfür eine einfache Möglichkeit? Hab schon eine Ewigkeit rumprobiert, aber anscheinend steh ich grad auf der Leitung.


Vielen Dank für die Hilfe!

Gruss OBI


----------



## RS9999 (16. Juli 2006)

Probiere einmal folgendes:

```
<?php
    for($i=0;$i < count($data);$i++){

      if($data[$i]['fach_id'] == 'e'){
        $data1[] = $data[$i];
      }
      if($data[$i]['fach_id'] == 'f'){
        $data2[] = $data[$i];
      }
      if($data[$i]['fach_id'] == 'f'){
        $data3[] = $data[$i];
      }
    }
?>
```


----------



## MastaDaDesasta (20. Juli 2006)

Hallo, 
der Ansatz ist gut. Jetzt brauche ich nur noch eine Idee, wie ich diese if() Aufzählung Variabel  zu gestalten: 



```
$DB->query("SELECT DISTINCT fach_id FROM ibf_stunden order by fach_id ASC");
    for($i=0;$i < count($data);$i++)
{

while($row = $DB->fetch_row()) 
	{
      if($data[$i]['fach_id'] == $row['fach_id'])
		{
        $data1[] = $data[$i];
      		}
   	}
}
```

Nun brauch ich aber für oben bei dem $data1[] einen Counter, der das 1 immer erhöht.Aber wie binde ich den direkt in die Variable ein? Und würde das oben überhaupt klappen? Die DB Abfrage ist eine eigenständige Funktion.

Gruss OBI


----------

