我有一个表单,其中用户输入了大量不同的数据,以及其他迭代次数和被问及的人数。这就是我的函数必须使用未定义数量的“子数组”来执行多维数组。
基本上,我想要的是创建一个包含$ amount_of_iterations子数组的大型数组,每个数组都有$ amount_of_asked_people值。
但是,我试图制作这段代码,但不起作用:
$my_multidimensional_array = array();
$x = "";
for ($i = 0; $i < $amount_of_iterations; $i++)
{
for ($p = 0; $p < $amount_of_asked_people; $p++)
{
$x = rand();//actually an other function, but this will do for testing
$my_multidimensional_array[$i] = array($p => $x);
}
}
//But when i test it i get an error. Here is my testing code:
for ($i = 0; $i < $amount_of_iterations; $i++)
{
echo "<h1>Iteration number $i:</h1>";
for ($p = 0; $p < $amount_of_asked_people; $p++)
{
echo "<br />The Random value is: $my_multidimensional_array[$i][$p]";
}
}
(我已修改了真实的变量名称和隐私功能,但这应该可用于测试。)
当我回应这个时,我只能得到这个(我应该得到像“随机值:7771”这样的东西):
迭代次数0:
The Random value: Array[0]
The Random value: Array[1]
等
迭代次数1:
The Random value: Array[0]
The Random value: Array[1]
etc.etc。
答案 0 :(得分:2)
两个问题:
每次迭代以下行时,您都会破坏给定$i
的任何先前迭代的结果:
$my_multidimensional_array[$i] = array($p => $x);
将其重写为:
if(!isset($my_multidimensional_array[$i])) $my_multidimensional_array[$i] = array();
$my_multidimensional_array[$i][$p] = $x;
此外,在测试中,您没有在输出字符串中正确访问数组变量。请改用以下方法之一:
echo "<br />The Random value is: {$my_multidimensional_array[$i][$p]}";
// or
echo "<br />The Random value is: ".$my_multidimensional_array[$i][$p];
答案 1 :(得分:1)
在引号中使用数组变量时,如果要确保正确解析它,则需要用{}
括起它们。
echo "<br />The Random value is: {$my_multidimensional_array[$i][$p]}";