PHP数组:关于多维数组的简单问题

时间:2010-04-18 23:04:34

标签: php arrays json multidimensional-array

我有一个返回多行的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 个答案:

答案 0 :(得分:2)

我猜你的行:

$data = array();

在循环的每次迭代中初始化数组。您不会累积多行数据。

答案 1 :(得分:1)

我想这样的事情对你有用:

$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索引的查询中的所有行。如果这不是您想要的,请在评论中提问。

答案 2 :(得分:1)

如果我正确地读你,你应该做这样的事情:

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

(注意[]

这应该将每个数组附加到$ data而不是覆盖内容。