badcoder: for-Schleife: Reihenfolge der Variablen ändern

Hallo Leute,

ich habe folgende zwei for-Schleifen:

  
for ( $i = 0 ; $i <= MAX_I ; $i++ ) {  
	for ( $j = 0 ; $j <= MAX_J ; $j++ ) {  
		$xInput = "x";  
		$dynamicInputVariableX = "b";  
		$$dynamicInputVariableX = ${$xInput.$j}[$i];  
		$a = $sum[$j] * $b;  
		$aArray[] = $a;  
	}  
}  

Den Ausdruck $$dynamicInputVariableX = ${$xInput.$j}[$i]; möchte ich in $$dynamicInputVariableX = ${$xInput.$i}[$j]; abändern, ohne dass sich der Output der gesamten Schleife (sprich: $aArray) ändert! Leider komme ich nicht weiter.

  1. Leider komme ich nicht weiter.

    Hm.

    $dynamicInputVariableX = "b";  
    $$dynamicInputVariableX = ${$xInput.$j}[$i];  
    #also, aufgelöst:  
    $b=${$xInput.$j}[$i];  
    $a = $sum[$j] * $b;  
    $aArray[] = $a;
    

    Ich weiss ja nicht, wie Du unter den Umständen etwas an der Zeile $$dynamicInputVariableX = ${$xInput.$j}[$i]; ändern willst, ohne das Ergebnis zu ändern.

    Dein Code sieht sehr nach "April, April" aus. Wenn DAS trotz des heutigem Datums echt sein sollte, dann denke über eine Vereinfachung nach. Benutze Arrays statt sowas wie $x1 ... $x12!

    Jörg Reinholz

    1. Benutze Arrays statt sowas wie $x1 ... $x12!

      Und wie greife ich dann in der Schleife auf das Array zu?

      1. Benutze Arrays statt sowas wie $x1 ... $x12!

        Und wie greife ich dann in der Schleife auf das Array zu?

        So:

        test.php:

        <?php  
        $x[2][3]=4;  
        $i=2;  
        $j=3;  
        print '$x['.$i.']['.$j.']='.$x[$i][$j]."\n";  
        ?>  
        
        

        ~> php test.php
        $x[2][3]=4


        Jörg Reinholz

  2. Tach!

      $xInput = "x";  
      $dynamicInputVariableX = "b";  
      $$dynamicInputVariableX = ${$xInput.$j}[$i];  
    

    $b = ${'x' . $j}[$i];

    und die anderen beiden Zeilen können ersatzlos wegfallen. Zumindest kann man den Code so vereinfachen.

    Den Ausdruck $$dynamicInputVariableX = ${$xInput.$j}[$i]; möchte ich in $$dynamicInputVariableX = ${$xInput.$i}[$j]; abändern, ohne dass sich der Output der gesamten Schleife (sprich: $aArray) ändert! Leider komme ich nicht weiter.

    Ich weiß nicht, was das Ziel ist und warum du $i gegen $j tauschen willst, aber wenn sich am Ergebnis nichts ändern soll, musst du auch in den beiden for-Schleifen alle $i gegen $j tauschen (aber nicht MAX_I gegen MAX_J).

    dedlfix.