导出多个json文件

时间:2013-03-12 09:16:10

标签: php mysql json foreach

我正在使用wordpress与nextgen库,我想从一个单独的JSON文件中获取特定图库ID的图像。到目前为止,我有这个代码,但只是从给定的ID导出图像(在这种情况下; 7)。我知道必须有某种foreach函数,但我的javascript知识不会那么远。

有人可以帮我这个吗?我到目前为止的代码:

mysql_connect("localhost","DB-NAME","DB-PASSWORD");
mysql_select_db("DB-NAME");

$result=mysql_query("SELECT filename FROM zs_ngg_pictures WHERE galleryid = '7' ORDER BY sortorder LIMIT 3");

while($row=mysql_fetch_assoc($result)){
$output[]=$row;
}

$fp = fopen('result.json', 'w');
fwrite($fp, json_encode($output));
fclose($fp);

echo json_encode($output);

2 个答案:

答案 0 :(得分:0)

如果我正确地理解了你想要实现的目标,你可以简单地获取所有图片,将它们放在一个多维数组中:

$result=mysql_query("SELECT filename, galleryid FROM zs_ngg_pictures ORDER BY sortorder");

while($row=mysql_fetch_assoc($result)){
  $output[$row['galleryid']][] = $row['filename'];
}

你有一个这样的PHP数组(如果你有两个id为7和23的画廊):

array(
  7 => array('file7-1.jpg','file7-2.jpg','file7-3.jpg'),
  23 => array('file23-1.jpg','file23-2.jpg'),
);

所以result.json文件就像:

{ "7"  : ["file7-1.jpg", "file7-2.jpg", "file7-3.jpg"],
  "23" : ["file23-1.jpg", "file23-2.jpg"] }

如果您想为每个galleryid分别创建文件,则可以循环并保存具有不同名称的文件:

foreach($output as $gall_id => $gallery) {
  file_put_contents('result-'.$gall_id.'.json', json_encode($gallery));
}

您将拥有两个名为result-7.jsonresult-23.json

的文件

答案 1 :(得分:0)

而不是执行复杂的fopen()内容和echo

$fp = fopen('result.json', 'w');
fwrite($fp, json_encode($output));
fclose($fp);

echo json_encode($output);

你可以简单地打电话:

file_put_contents('result.json', json_encode($output));
readfile('result.json');

或者您跳过该文件并简单输出JSON:

echo json_encode($output));