格式化数组中的mysql数据

时间:2011-07-26 05:15:42

标签: php mysql json

我从数据库中提取数据并尝试使用json_encode编码为JSON数据。但是为了让我在Android应用程序中更容易阅读。我正在跳的格式与我目前正在做的不同。请参阅底部编码字符串示例。任何帮助都会很棒。在此先感谢。

$result = $db->query($query);

        while($info = mysql_fetch_array($result))
            {
            $content[] = $info;
            }

$count = count($content);

$result=array();

for($i=0;$i<$count;$i++)
{
    $result[id][] = $content[$i]['imageID'];
    $result[name][] = $content[$i]['Name'];
    $result[thumb][] = $content[$i]['Thumb'];
    $result[path][] = $content[$i]['Path'];
}

echo json_encode($result);

{"id":["1","2","3"],"name":["Dragon","fly","bug"],"thumb":["thm_polaroid.jpg","thm_default.jpg","thm_enhanced-buzz-9667-1270841394-4.jpg"],"path":["polaroid.jpg","default.jpg","enhanced-buzz-9667-1270841394-4.jpg"]}

但是当我用json_encode编码时,我正在尝试格式化我的数组。

[{"id":"1","name":"Dragon","thumb":"thm_polaroid.jpg","path":"polaroid.jpg"},{"id":"2","name":"Fly","thumb":"thm_default.jpg","path":"default.jpg"},{"id":"3","name":"Bug","thumb":"thm_enhanced-buzz-9667-1270841394-4.jpg","path":"enhanced-buzz-9667-1270841394-4.jpg"}]

3 个答案:

答案 0 :(得分:4)

嗯,有一个问题。这不是有效的JSON:

{"image":["1","Dragon","thm_polaroid.jpg","polaroid.jpg"],
 "image":["2","fly","thm_default.jpg","default.jpg"]}

JSON对象每个唯一键只能有一个值。这意味着你的后一个图像密钥会破坏前者的价值。

如果您对此感到满意,那么:

[["1","Dragon","thm_polaroid.jpg","polaroid.jpg"],
 ["2","fly","thm_default.jpg","default.jpg"]]

然后你可以简单地使用mysql_fetch_row:

 $result = $db->query($query);

 while($info = mysql_fetch_row($result))
 {
     $content[] = $info;
 }

 echo json_encode($content);

旁注:

通常,在PHP中,最好使用foreach( $arr as $val )(或$ arr作为$ key =&gt; $ val)。 for循环应限于严格必要的时候。

答案 1 :(得分:1)

您需要将迭代器$ i添加到设置数组

    for($i=0;$i<$count;$i++)
    {
        $result[$i][id] = $content[$i]['imageID'];
        $result[$i][name] = $content[$i]['Name'];
        $result[$i][thumb] = $content[$i]['Thumb'];
        $result[$i][path] = $content[$i]['Path'];
    }

答案 2 :(得分:0)

<?
$result = $db->query($query);

while($info = mysql_fetch_array($result))
    $content[] = $info;
$result=array();
$count = count($content);
for ($x=0;$x<$count;++$x)
{
    $result[$x][] = $content[$x]['imageID'];
    $result[$x][] = $content[$x]['Name'];
    $result[$x][] = $content[$x]['Thumb'];
    $result[$x][] = $content[$x]['Path'];
}
echo json_encode($result);
?>