使用SESSION变量的PHP多维数组

时间:2017-02-23 13:56:38

标签: php arrays session multidimensional-array

所以我将以下PHP脚本添加到随机矩阵中,以便为测验创建动态类型的问题:

<?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);
?>

这样可以正常存储值,以便输出如下:

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

(例如)

现在,当我尝试在同一个for循环中使用会话变量时:

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']);

输出结果如下:

16 4
4 8
NULL

我不明白为什么会这样,代码和逻辑完全一样,我错过了什么?

4 个答案:

答案 0 :(得分:2)

我改变了

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

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

此代码应该按预期工作:

<?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']);

?>

答案 1 :(得分:1)

确保您的会话具有有效密钥

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']);

这是主索引,所以当你想要添加更多时,那就像这样定义

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

答案 2 :(得分:0)

试试这段代码

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']);

这是主索引,所以当你想要添加更多时,那就像这样定义

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

答案 3 :(得分:0)

您可以将数组放入循环外的会话中:

  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;