Variable mit Nummer ergänzen in For-Schleife

paraphan

Erfahrenes Mitglied
Hallo,
ich hoffe die Frage ist jetzt nicht komplett blöd, aber ich bekomme es einfach nicht hin...
ich habe eine for-Schleife, die mir Inhalte aus ner Datenbank holt, soweit klappt das gut.
jetzt hätte ich diese Inhalte dann aber gerne in jeweils in 2 Variablen:
ausgabe_header0, ausgabe_message0
ausgabe_header1, ausgabe_message1
...
also ich hätte gerne immer "ausgabe_header"+den jeweiligen wert von i als Variable.
bei meinem Code haut das leider nicht hin:

PHP:
$inhalte=mysql_query("select * from ".T_SMS." order by ID DESC LIMIT 0 , 5",$db);
  $numinhalte=mysql_num_rows($inhalte);
  for ($i=0; $i<$numinhalte; $i++) {
      $sms=mysql_result($inhalte,$i,"sms");
      $zeit=mysql_result($inhalte,$i,"zeit");
      $zeit=substr($zeit, 11, 5);
      $nummer=mysql_result($inhalte,$i,"nummer");

      echo "<div class=einheit><b>".$zeit." | ";
      echo $nummer."</b><br>\n";
      echo $sms."</div>\n\n";

	  $ausgabe_header.$i=$zeit." | ".$nummer;
	  $ausgabe_message.$i=$sms;
	  echo $ausgabe_header.$i;
	  echo $ausgabe_message.$i;
	  
      }

Danke für die Hilfe
 
ich würde das so machen:
PHP:
$tmpheader    = $ausgabe_header . $i;
$tmpmessage = $ausgabe_message . $i;

$$tmpheader     = $zeit . '|' . $nummer;
$$tmpmessage  = $sms;

edit:

Oder noch anders gehts so (fast das gleiche ;) )
PHP:
${$ausgabe_header.$i}=$zeit." | ".$nummer;
${$ausgabe_message.$i}=$sms;
echo ${$ausgabe_header.$i};
echo ${$ausgabe_message.$i};
 
Hab nur mal so schnell drübergeguckt.
$ausgabe_message.$i <-- Sieht danach aus, als ob man da ein Array draus machen könnte?
Sind doch viel schöner und auch praktischer ;)
 
PHP:
echo $ausgabe_header0;
(also wenn ich die Variable ohne das "i" ansprechen will) gibt aber leider nichts aus...wieso?
 
Zuletzt bearbeitet:
paraphan hat gesagt.:
PHP:
echo $ausgabe_header0;
(also wenn ich die Variable ohne das "i" ansprechen will) gibt aber leider nichts aus...wieso?

Weil du den Wert der Variable ausgabe_message reinschreiben musst
. willst du natürlich $ausgabe_message0, $ausgabe_message1 usw verwenden. musst du


PHP:
${'ausgabe_header'.$i}=$zeit." | ".$nummer;
${'ausgabe_message'.$i}=$sms;
echo ${'ausgabe_header'.$i};
echo ${'ausgabe_message'.$i};
schreiben.

Somit kannste nun auch auf $ausgabe_message0 usw. direkt zugreifen.

Die { und } im variablennamen sagen dem PHP nur, dass er das was in den klammern steht zuerst ausführen soll. Demzufolge wird aus ${'ausgabe_header'.$i} erst ${'ausgabe_header0'} (bei $i = 0) und dann $ausgabe_header0 draus. :)

Weiß ich nicht, aber wie gesagt, Arrays sind besser und haben mehr Stil
Arrays sind leicht zu lesen ;) Wenn man dahingehend kryptisch schreiben will dann find ich die Methode interessanter. Ok nützlich in ner großen Anwendung ist ja was anderes ;)
Ausserdem wurde ja gefragt, wie es geht und nicht, obs was besseres gibt :-)
 
Zuletzt bearbeitet:
Hallo KoMtuR,
danke nochmals für deine schnelle Hilfe und ausführliche Antwort - hat mir schon sehr weitergeholfen.
Das Problem ist, dass ich auf die Variablen ausgabe_message0, ausgabe_message1, etc. von Flash aus zugreifen will und da nützt mir dann das $i nichts mehr.
Hab es jetzt so gelöst

PHP:
 if ($i==0){
	  	$ausgabe_message0=$zeit." | ".$nummer;
	  	$ausgabe_message0=$sms;
		}
if ($i==1){
	  	$ausgabe_message1=$zeit." | ".$nummer;
	  	$ausgabe_message1=$sms;
		}
...

Frag mich aber ob es da nicht eine elegantere Lösung gibt? Vielleicht eine Schleife statt ner if-Abfrage?
 
Zuletzt bearbeitet:
Mit dem Code
PHP:
${'ausgabe_header'.$i}=$zeit." | ".$nummer;
${'ausgabe_message'.$i}=$sms;

kannst du nun im späteren Verlauf auf bestimmte Variablen eben zugreifen und zwar so
PHP:
echo $ausgabe_message0;
//oder
echo $ausgabe_message3; //vorrausgesetzt $i war mindestens 3, sonst sollte ein fehler kommen

Ich hab die Sachen so umgeschrieben, dass du eben die Variablen so ansprechen kannst, wie du es eigentlich wolltest :)

Diese If-Verzweigung bei deinem Post ist die umständlichere Variante von
PHP:
${'ausgabe_header'.$i}=$zeit." | ".$nummer;
${'ausgabe_message'.$i}=$sms;
Im Endeffekt kommt aber das Gleich raus.
 
KoMtuR hat gesagt.:
Mit dem Code

kannst du nun im späteren Verlauf auf bestimmte Variablen eben zugreifen und zwar so
PHP:
echo $ausgabe_message0;
//oder
echo $ausgabe_message3; //vorrausgesetzt $i war mindestens 3, sonst sollte ein fehler kommen

Ich hab die Sachen so umgeschrieben, dass du eben die Variablen so ansprechen kannst, wie du es eigentlich wolltest :)

Ja, stimmt, das geht ja einwandfrei. Sorry für die Umstände, bin halt noch Anfänger...Danke jedenfalls nochmals recht herzlich für deine Hilfe!
 
Zurück