2017-02-23 8 views
0

Also ich habe folgendes PHP-Skript Zufallsmatrizen zusammen zu geben, um eine dynamische Art der Frage nach einem Quiz zu erstellen: die WertePHP multidimensionalen Arrays SESSION Variablen

<?php 
     $min = 0; 
     $max = 10; 

     $a1 = rand($min, $max); 
     $b1 = rand($min, $max); 
     $c1 = rand($min, $max); 
     $d1 = rand($min, $max); 

     $a2 = rand($min, $max); 
     $b2 = rand($min, $max); 
     $c2 = rand($min, $max); 
     $d2 = rand($min, $max); 

     $matrixa = array(
      array($a1,$b1), 
      array($c1, $d1) 
    ); 
     $matrixb = array(
      array($a2,$b2), 
      array($c2, $d2) 
    );      

     for ($i=0; $i<2; $i++){ 
      for ($j=0; $j<2; $j++){ 
       $matresult[$i][$j] = $matrixa[$i][$j] + $matrixb[$i][$j]; 
       echo $matresult[$i][$j] . ' ';  
      } 
      echo '<br>'; 
     } 
var_dump($matresult); 
?> 

Dies funktioniert, und speichert korrekt so dass der Ausgang ist wie folgt:

16 4 
4 8 
array(2) { [0]=> array(2) { [0]=> int(16) [1]=> int(4) } [1]=> array(2) { [0]=> int(4) [1]=> int(8) } } 

(zum Beispiel)

Nun, wenn ich versuche, ein Session-Variable innerhalb desselben for-Schleife zu verwenden:

for ($i=0; $i<2; $i++){ 
    for ($j=0; $j<2; $j++){ 
     $_SESSION['matresult[$i][$j'] = $matrixa[$i][$j] + $matrixb[$i][$j]; 
     echo $_SESSION['matresult[$i][$j]'] . ' '; 
    } 
    echo '<br>'; 
} 
var_dump($_SESSION['matresult']); 

Der Ausgang gibt der folgende:

16 4 
4 8 
NULL 

Ich verstehe nicht, warum dies geschieht, wird der Code und Logik ist genau das gleiche, was habe ich verpasst?

+0

'$ _SESSION ['matresult [$ i] [$ j']' ????? //// –

+0

Mögliche Duplikate von [Kann ich Array \ _push auf einem SESSION-Array in PHP verwenden?] (Http : //stackoverflow.com/questions/2616540/cani-i-use-array-push-on-a-session-array-in-php) –

+0

Sie haben einen Tippfehler. '$ _SESSION ['matresult [$ i] [$ j']' ist falsch, Sie müssen den letzten Array-Schlüssel ']' schließen. Außerdem ist 'mt_rand' zufälliger als' rand' :-) – Martin

Antwort

2

Ich änderte

$_SESSION['matresult[$i][$j'] = $matrixa[$i][$j] + $matrixb[$i][$j]; 
    echo $_SESSION['matresult[$i][$j]'] . ' '; 

zu

$_SESSION['matresult'][$i][$j] = $matrixa[$i][$j] + $matrixb[$i][$j]; 
    echo $_SESSION['matresult'][$i][$j] . ' '; 

Dieser Code sollte so funktionieren espected:

<?php 

    .... 

    for ($i=0; $i<2; $i++){ 
     for ($j=0; $j<2; $j++){ 
      $_SESSION['matresult'][$i][$j] = $matrixa[$i][$j] + $matrixb[$i][$j]; 
      echo $_SESSION['matresult'][$i][$j] . ' '; 
     } 
     echo '<br>'; 
    } 
    var_dump($_SESSION['matresult']); 

?> 
+0

Welche Änderungen haben Sie vorgenommen? Was hast du repariert? Bearbeite deine Antwort und verbessere sie :-): – Martin

+0

Ich habe die Antwort bearbeitet – Alex

+0

Danke Alex, mir ist aufgefallen wie bei deiner ursprünglichen Antwort, was du vor dem EDIT verändert hast. So eine einfache Lösung, danke. – Kieran

0

versuchen diesen Code

for ($i=0; $i<2; $i++){ 
for ($j=0; $j<2; $j++){ 
    $_SESSION['matresult'][$i][$j] = $matrixa[$i][$j] + $matrixb[$i][$j]; 
    echo $_SESSION['matresult'][$i][$j] . ' '; 
} 
echo '<br>'; 
} 
var_dump($_SESSION['matresult']); 

dies ist Hauptindex so, wenn Sie möchten mehr hinzuzufügen dann wie diese definieren

$_SESSION['matresult'][][].... 
+1

Welche Änderungen haben Sie vorgenommen? Was hast du repariert? – Martin

+0

Es war ein Fehler, ich möchte meine Antwort ändern. Entschuldigung –

+0

Bitte überprüfen Sie meinen Update-Code. es war zu definieren, die –

1

Stellen Sie sicher, dass Ihre Sitzung einen gültigen hat Schlüssel

for ($i=0; $i<2; $i++){ 
    for ($j=0; $j<2; $j++){ 
     $_SESSION['matresult'][$i][$j] = $matrixa[$i][$j] + $matrixb[$i][$j]; 
     echo $_SESSION['matresult'][$i][$j] . ' '; 
    } 
    echo '<br>'; 
} 
var_dump($_SESSION['matresult']); 

dies ist Hauptindex so, wenn Sie mehr hinzufügen möchten definieren dann wie folgt

$_SESSION['matresult'][][].... 
0

Sie haben soeben Ihre Array in die Sitzung außerhalb der Schleife setzen könnte:

for ($i=0; $i<2; $i++){ 
     for ($j=0; $j<2; $j++){ 
      $matresult[$i][$j] = $matrixa[$i][$j] + $matrixb[$i][$j]; 
      echo $matresult[$i][$j] . ' ';  
     } 
     echo '<br>'; 
    } 

    $_SESSION['matresult'] = $matresult; 
Verwandte Themen