【问题标题】:format mysql data in array在数组中格式化mysql数据
【发布时间】:2011-07-26 05:15:42
【问题描述】:

我正在从我的数据库中提取数据并尝试使用 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"}]

【问题讨论】:

  • 你想要的格式的问题是,你有多次字符串“image”作为哈希键——这是不可能的,因为每个键都必须是唯一的。
  • {"image":["1","Dragon","thm_polaroid.jpg","polaroid.jpg"],"image": - 您有两个(或更多)相同的密钥 (image)。你真的想要吗?
  • 不,我不需要重复“图像”键,我现在正在编辑我的帖子。

标签: php mysql json


【解决方案1】:

嗯,有问题。这是无效的 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 as $key => $val)。 for 循环应该限制在绝对必要的时候。

【讨论】:

    【解决方案2】:

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

    for($i=0;$i

    【讨论】:

    • 我知道这很容易。如果你看到我一直在尝试的所有疯狂的东西,你会笑的。 +1
    • 这不是您要求的解决方案。这将在每个“图像”下给出一个关联数组,而不是一个数字数组。
    【解决方案3】:
    <?
    $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);
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2021-12-18
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多