PHP中多维数组中未定义的数据量

时间:2010-12-12 16:09:15

标签: php arrays size undefined multidimensional-array

我有一个表单,其中用户输入了大量不同的数据,以及其他迭代次数和被问及的人数。这就是我的函数必须使用未定义数量的“子数组”来执行多维数组。

基本上,我想要的是创建一个包含$ 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。

2 个答案:

答案 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]}";