我有这个数组
$data = [ 'admin'=>'1', 'natasha'=>'2', 'demo3'=>'3' ];
当我输出echo json_encode($data);
时,我得到{"admin":"1","natasha":"2","demo3":"3"}
,这就是我需要的方式,而且效果很好!
现在我正试图从数据库循环数据,如下所示:
$data = array();
foreach(TopicModel::theListofUsers($topic_cat,30) as $row) {
$data[]= array($row->user_name=>$row->user_id);
}
header('Content-Type: application/json');
echo json_encode($data);
但是我的格式为[{"demo4":"4"},{"demo3":"3"}]
,但我需要 {"admin":"1","natasha":"2","demo3":"3"}
我尝试了很多东西,传递字符串并转换为数组或操作数组,但没有一个能给我正确的格式。有什么想法吗?
答案 0 :(得分:2)
$data = array();
foreach(TopicModel::theListofUsers($topic_cat,30) as $row) {
$data[$row->user_name] = $row->user_id;
}
header('Content-Type: application/json');
echo json_encode($data);
答案 1 :(得分:1)
要实现您的目标,您需要将名称设置为foreach循环中的数组键:
,
我建议你逃避数组的键和值以避免不需要的字符,否则你的json_encode将无法返回false。
一种简单的方法可以是:$data = array();
foreach(TopicModel::theListofUsers($topic_cat,30) as $row)
{
$data[$row->user_name]= $row->user_id;
}
header('Content-Type: application/json');
echo json_encode($data);
和str_replace("'", "", $row->user_name)
。