从循环到JSON格式的PHP与

时间:2017-07-13 11:32:55

标签: php arrays json

我有这个数组

$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"}

我尝试了很多东西,传递字符串并转换为数组或操作数组,但没有一个能给我正确的格式。有什么想法吗?

2 个答案:

答案 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)