【问题标题】:How to change query string to json in PHP如何在 PHP 中将查询字符串更改为 json
【发布时间】:2016-04-24 13:49:13
【问题描述】:

我刚开始使用 Wordpress 并尝试在 PHP 中将查询结果更改为 json,以下是查询结果。

user_id   meta_key      meta_value  
1        nickname       bko117
1        first_name     seokho
1        last_name      baek
1        genba          Company
1        Department     00
2        nickname       themedemos
2        first_name     
2        last_name 
3        nickname       john

.....

我想把这个数据改成json数据

例如:

"data":[
    {"nickname":"bko117", "first_name":"seokho","lastname":"baek","genba":"company","Department":"00" },
    {"nickname":"themedemos", "first_name":"","lastname":"","genba":"","Department":"" },
    {"nickname":"john", "first_name":"","lastname":"","genba":"","Department":"" },
    .......
   ]

当 user_id 改变时,创建新的 json 数组并放在它上面。
这就是我想做的,我已经尝试了 2 个多小时,但仍然在这个问题上挣扎。
下一个代码是我到目前为止所做的。

<?php 
echo "1<br>";
global $wpdb;
$results = $wpdb->get_results("SELECT `user_id` , `meta_key` , `meta_value`
        FROM `wp_usermeta`
        WHERE `meta_key`
        IN (
        'nickname', 'first_name', 'last_name', 'Department', 'genba'
)
        ORDER BY `user_id` ASC
        LIMIT 0 , 999999");
echo "2<br>";
//print_r($results);
//print json_encode($results);
$dataArray = array();
echo "3<br>";
echo "4<br>";
foreach($results as $row){
    echo $row -> meta_key, ':';
    echo $row -> meta_value, '<br>';
}
print_r($data);
?>

提前感谢您对此事的关注。

【问题讨论】:

    标签: php mysql json wordpress


    【解决方案1】:

    如下使用:

    $dataArray = array();
    foreach($results as $row){
        $dataArray[$row->user_id][$row->meta_key] = $row->meta_value;
    }
    print_r(json_encode($dataArray));
    

    【讨论】:

    • 谢谢。现在我得到了 [{"nickname":"bko117"},{"first_name":"seokho"},{"last_name":"baek"},{"genba":"Company"},{"Department":" 00"},{"nickname":"themedemos"}... 这是更好的答案,但我仍然想要这样 -> {"nickname":"bko117", "first_name":"seokho","lastname" :"baek","genba":"company","Department":"00" }
    • 你会在此处添加print_r($results); 输出吗?
    • 这里是print_r($results); 输出。 Array ( [0] =&gt; stdClass Object ( [user_id] =&gt; 1 [meta_key] =&gt; nickname [meta_value] =&gt; bko117 ) [1] =&gt; stdClass Object ( [user_id] =&gt; 1 [meta_key] =&gt; first_name [meta_value] =&gt; seokho ) [2] =&gt; stdClass Object ( [user_id] =&gt; 1 [meta_key] =&gt; last_name [meta_value] =&gt; baek ) [3] =&gt; stdClass Object ( [user_id] =&gt; 1 [meta_key] =&gt; genba [meta_value] =&gt; Company ) [4] =&gt; stdClass Object ( [user_id] =&gt; 1 [meta_key] =&gt; Department [meta_value] =&gt; 00 ) [5] =&gt; stdClass Object ( [user_id] =&gt; 2 [meta_key] =&gt; nickname [meta_value] =&gt; themedemos )
    • 非常感谢!最后它起作用了。现在我得到了{"1":{"nickname":"bko117","first_name":"seokho","last_name":"baek","genba":"Company","Department":"00"},"2":{"nickname":"themedemos","first_name":"","last_name":""},
    【解决方案2】:

    您可以在具有所需结构的数组上使用json_encode,如下所示:

    $dataArray = array();
    foreach($results as $row){
    $dataArray[$row->meta_key] = $row->meta_value;
    }
    
    print_r(json_encode($dataArray));
    

    【讨论】:

    • 感谢您的回复。我尝试了这段代码,它以某种方式工作,但我只得到最后一个。只是 {"nickname":"james","first_name":"\u672c\uff2a","last_name":"\u30e4\u30f3","genba":"Company","Department":"3"},如何我可以获取所有数据吗?
    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多