2016-01-19 1 views
0

Я только что начал Wordpress и попытался изменить результат запроса на json в PHP, а следующий результат запроса.Как изменить строку запроса на json в PHP

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 и поставить рядом с ней.
Это то, что я хочу сделать, и я пробовал больше двух часов, но все еще борюсь с этим вопросом.
Следующий код - это то, что я сделал до сих пор.

<?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); 
?> 

Заранее благодарю вас за внимание.

ответ

1

Использование ниже:

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

Спасибо. теперь я получил [{"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»} – Dinwy

+0

Вы добавите 'print_r ($ results);' output here? – AnkiiG

+0

Вот результат 'print_r ($ results);' output. 'Array ([0] => stdClass Object ([user_id] => 1 [meta_key] => nickname [meta_value] => bko117) [1] => stdClass Object ([user_id] => 1 [meta_key] => first_name [meta_value] => seokho) [2] => stdClass Object ([user_id] => 1 [meta_key] => last_name [meta_value] => baek) [3] => stdClass Object ([user_id] => 1 [meta_key ] => genba [meta_value] => Компания) [4] => stdClass Object ([user_id] => 1 [meta_key] => Отдел [meta_value] => 00) [5] => stdClass Object ([user_id] = > 2 [meta_key] => nickname [meta_value] => themedemos) ' – Dinwy

0

Вы можете использовать json_encode на массив с желаемой структурой, например, так:

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

print_r(json_encode($dataArray)); 
+0

спасибо за ответ. Я пробовал этот код, и он работает как-то, но я получаю только последний. просто {"nickname": "james", "first_name": "\ u672c \ uff2a", "last_name": "\ u30e4 \ u30f3", "genba": "Компания", "Отдел": "3"}, как я могу получить все данные? – Dinwy