switch verschachteln! geht das?

Guten Abend an alle!
Ich hab folgendes Problem...
Ich habe etwa 400 Datenbank-Infos in Variablen drin...
Damit jetzt die richtige Variable eingesetzt wird zum richtigen Zeitpunkt möchte ich gerne switch verwenden!

Man muss sich das so vorstellen...
Die Informationen sind sortiert nach Tagen und Personen! An einem Tag sollen 10 Leute ausgegeben werden.
Deswegen laufen zwei for Schleifen - die eine für die Tage und die andere innerhalb für die Personen und genauso hab ich die Identifikation der richtigen Variable mit switch angepackt, aber wenn es in der Schleife zum zweiten Tag kommt, wird keine Information aus dem switch ausgegeben...
Hier Mal der Code des Switch:

PHP:
 switch ($u)
 	{
 	case 1:
 	switch ($i)
 		{
 		case 1:
 		$check=$res2->a_1;
 		$check2=$res2->a_1_z;
 		break;
 		case 2:
 		$check=$res2->a_2;
 		$check2=$res2->a_2_z;
 		break;
 		case 3:
 		$check=$res2->a_3;
 		$check2=$res2->a_3_z;
 		break;
 		case 4:
 		$check=$res2->a_4;
 		$check2=$res2->a_4_z;
 		break;
 		case 5:
 		$check=$res2->a_5;
 		$check2=$res2->a_5_z;
 		break;
 		case 6:
 		$check=$res2->a_6;
 		$check2=$res2->a_6_z;
 		break;
 		case 7:
 		$check=$res2->a_7;
 		$check2=$res2->a_7_z;
 		break;
 		case 8:
 		$check=$res2->a_8;
 		$check2=$res2->a_8_z;
 		break;
 		case 9:
 		$check=$res2->a_9;
 		$check2=$res2->a_9_z;
 		break;
 		case 10:
 		$check=$res2->a_10;
 		$check2=$res2->a_10_z;
 		break;
 		}
 	break;
 	case 2:
 	switch ($i)
 		{
 		case 1:
 		$check=$res2->b_1;
 		$check2=$res2->b_1_z;
 		break;
 		case 2:
 		$check=$res2->b_2;
 		$check2=$res2->b_2_z;
 		break;
 		case 3:
 		$check=$res2->b_3;
 		$check2=$res2->b_3_z;
 		break;
 		case 4:
 		$check=$res2->b_4;
 		$check2=$res2->b_4_z;
 		break;
 		case 5:
 		$check=$res2->b_5;
 		$check2=$res2->b_5_z;
 		break;
 		case 6:
 		$check=$res2->b_6;
 		$check2=$res2->b_6_z;
 		break;
 		case 7:
 		$check=$res2->b_7;
 		$check2=$res2->b_7_z;
 		break;
 		case 8:
 		$check=$res2->b_8;
 		$check2=$res2->b_8_z;
 		break;
 		case 9:
 		$check=$res2->b_9;
 		$check2=$res2->b_9_z;
 		break;
 		case 10:
 		$check=$res2->b_10;
 		$check2=$res2->b_10_z;
 		break;
 		}
 	break;
 }



wäre sehr dankbar wenn ihr mir helfen würdet!

keep on checking
Hockeyfan
 
mein tipp, ob schön oder nicht, ist eval().
bei deinem beispiel wäre es dann so:
Code:
   eval( "\$check	= \$res2->a_$i;" );
       eval( "\$check2  = \$res2->a_$i_z;" );
bei mehreren $res ( $res1, $res2, $res3, ...., $resn ) musst du ne for oder ne while schleife benutzen.

kurze erklärung zu eval:
eval wandelt einen string in php-code um. wichtig is, dass du bei weiter zu verwendenden variablen einen "\" vorsetzt. is in etwa das gleiche wie bei normalen strings.

hoffe das hilft,
mfg tiischa
 
Zuletzt bearbeitet:
Du kannst mit [phpf]get_object_vars[/phpf] zunächst ein Array erzeugen. Dann würde ich folgenden Code vorschlagen:
PHP:
$res3=get_object_vars($res2);
$v=null;
if ($u==1) {
    $v='a';
} else if ($u==2) {
    $v='b';
}
if (!empty($v) 
        && isset($res3[$v.'_'.$i]) 
        && isset($res3[$v.'_'.$i.'_z']) ) {
    $check=$res3[$v.'_'.$i];
    $check2=$res3[$v.'_'.$i.'_z'];
}
Das durchbricht zwar die Kapselung ... aber PHP machts möglich :rolleyes:
Wenn es sich bei $res2 um die Ergebniszeile einer Datenbankabfrage handelt, kannst Du Dir die Spalten ja auch direkt (z.B. mit [phpf]mysql_fetch_assoc[/phpf]) als Array holen.

Gruß hpvw
 
Jo Danke für die Lösungen!

Hab wieder einiges gelernt doch da lag nicht das Problem...
Ich habe $res2 innerhalb in die Schleife ausversehen gesetzt und da es nur eine Zeile ist in der Tabelle und somit war beim zweiten Durchlauf keine Daten mehr da :-(

Naja aber den Befehl eval habe ich schon seit längerem gesucht und die andere Lösung mit get_object_vars() finde ich sehr praktisch!
also danke Leute...

keep on checking
Hockeyfan
 
Zurück