我一直在寻找一个看似真正简单的任务的明确答案 - 遗憾的是我能找到的所有解决方案(并且有很多)都使用了不推荐使用的mysql_fetch_assoc。
我所要做的就是从数据库中获取两列结果并以JSON格式回显 - 我已经管理好一切,除了一点 - 我无法工作如何获取值使用array_push到二维数组(两列数组)。我最终将我的两个列值合并到一个数组中。这是我所做的一个剥离版本:
header('Content-Type: application/json');
$mostPopularStm = $sparklyGenericPdoObj->prepare("SELECT views, thing FROM X");
$mostPopularStm->execute();
$mostPopularRS = $mostPopularStm->fetchAll();
echo '{data:';
$mostPopularJson = array();
foreach ($mostPopularRS as $mostPopularItem)
{
array_push($mostPopularJson, $mostPopularItem["views"], $mostPopularItem["thing"]);
}
echo json_encode($mostPopularJson);
echo '}';
这产生如下输出:
{data:["Monkeyface","43","Giblets","25","Svelte","22","Biriani","21","Mandibles","20"]}
但我需要的是:
{data:["Monkeyface":"43","Giblets":"25","Svelte":"22","Biriani":"21","Mandibles":"20"]}
我知道我可以手动创建一些东西,使用json_encode格式化每个循环上的字符串,但效果似乎很低。
任何指针都会非常感激!
答案 0 :(得分:1)
像这样编写你的数组:
$mostPopularJson [$mostPopularItem["thing"]] = $mostPopularItem["views"];
答案 1 :(得分:1)
您当前的数组就像
array(0 => 'Monkeyface', 1 => 43, /* ... */);
但你需要
array('Monkeyface' => 43, /* ... */);
替换
array_push($mostPopularJson, $mostPopularItem["views"], $mostPopularItem["thing"])
通过
$mostPopularJson[$mostPopularItem["thing"]] = $mostPopularItem["views"];
和
echo '{data:';
echo json_encode($mostPopularJson)
echo '}';
最好使用:
echo json_encode(array('data' => $mostPopularJson));
正如kingkero所说,你永远不会得到预期的结果,因为它是无效的:
{data:["Monkeyface":"43" ...
正确:
{ "data": { "Monkeyface": "43" ...