Двумерный ассоциативный массив в PHP - PullRequest
3 голосов
/ 14 июня 2009

В моем коде я получаю данные (три столбца) из базы данных sql и хочу сохранить строки в ассоциативном массиве PHP. Массив должен быть многомерным, потому что я хочу использовать идентификатор строки из базы данных в качестве ключа, чтобы я мог получить значения, подобные этим:

$ продуктов [ "f84jjg"] [ "имя"]

$ продуктов [ "245"] [ "код"]

Я пытался использовать следующий код, но он не работает:

while ($row = mysql_fetch_row($sqlresult))
{
    $products = array($row[0] => array(
            name => $row[1], 
            code => $row[2]
        )
    );
}

Кроме того, как мне ссылаться на ключ, если он взят из переменной? Что я хочу сделать, это:

$productName = $products[$thisProd]["name"];

Будет ли это работать?

1 Ответ

8 голосов
/ 14 июня 2009

Это должно сделать это, предполагая, что содержимое row[0] является уникальным идентификатором (иначе вы можете переопределить строку):

while($row = mysql_fetch_row($sqlresult)) {
    $products[$row[0]] = array(
        'name' => $row[1], 
        'code' => $row[2]
    );
}

Вам нужно поместить кавычки вокруг ключей массива, и вы создали массив массивов массивов.

Также обратите внимание, что вы можете использовать mysql_fetch_assoc вместо mysql_fetch_row, что даст вам ключи массива в качестве имен столбцов, что сделает это намного проще / чище:

while($row = mysql_fetch_assoc($sqlresult)) {
    $products[$row['myidcolumn']] = $row;
}

После этого код, который вы описали, будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...