неопределенное количество данных в многомерном массиве в PHP - PullRequest
0 голосов
/ 12 декабря 2010

У меня есть форма, где пользователь вводит много разных данных, среди прочего количество итераций и количество опрошенных людей. Это то, что моя функция должна сделать многомерный массив с неопределенным числом «подмассивов».

По сути, я хочу создать большой массив с подмассивами $ 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 ]

2 голосов
/ 12 декабря 2010

Две проблемы:

Каждый раз, когда вы выполняете итерацию по следующей строке, вы забиваете результат любой предыдущей итерации для данного $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 голос
/ 12 декабря 2010

Когда вы используете переменную-массив в кавычках, вам нужно заключить их в {}, если вы хотите убедиться, что они правильно проанализированы.

echo "<br />The Random value is: {$my_multidimensional_array[$i][$p]}";
...