所以我将以下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
我不明白为什么会这样,代码和逻辑完全一样,我错过了什么?
答案 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;