PHP массив: простой вопрос о многомерном массиве - PullRequest
1 голос
/ 19 апреля 2010

У меня есть запрос SQL, который возвращает несколько строк, и у меня есть:

$data = array(
    "nom" => $row['nom'] ,
    "prix"   => $row['rapport'],
    "average"   => "$moyenne_ge"
  );

, что идеально, но только если мой запрос возвращает одну строку.

Я попробовал это:

$data = array();
$data[$row['nom']]["nom"] = $row['nom'] ;
...
$data[$row['nom']]['average']  = "$moyenne_ge";

чтобы иметь:

$data[brand1][nom] = brand1
$data[brand1][average] = 150$
$data[brand2][nom] = brand2
$data[brand2][average] = 20$
...

но когда я это сделаю: json_encode($data)

У меня только последний объект JSON вместо всех объектов JSON из моего запроса, как если бы у моего массива была только одна марка вместо 10.

Полагаю, я где-то сделал глупость. Спасибо за вашу помощь

Ответы [ 3 ]

2 голосов
/ 19 апреля 2010

Я предполагаю, что ваша строка:

$data = array();

Инициализирует массив на каждой итерации цикла. Вы не накапливаете более одной строки данных.

1 голос
/ 19 апреля 2010

Если я правильно вас читаю, вам просто нужно сделать что-то вроде этого:

$data[] = array(
    "nom" => $row['nom'] ,
    "prix"   => $row['rapport'],
    "average"   => "$moyenne_ge"
);

(обратите внимание на [])

Это должно добавить каждый массив в $ data вместо перезаписи содержимого.

1 голос
/ 19 апреля 2010

Я думаю, что-то вроде этого должно работать для вас:

$resource = mysql_query("YOUR QUERY");
$results = array()

while($result = mysql_fetch_assoc($resource)) {
    $results[$result['brand']] = array(
        'nom' => $result['nom'],
        'prix' => $result['rapport'],
        'average' => $moyenne_ge
    );
)

$results теперь содержит все строки запроса, проиндексированные как brand. Спросите в комментариях, если это не то, что вы ищете.

...