编辑php查询以获取正确的json数据

编辑php查询以获取正确的json数据,php,json,Php,Json,我有一个包含3列的表(用户id、元键、元值) 我下面的代码根据需要获取json数据以显示为(key=value),但我也希望像这样显示用户id列(用户id=value)。现在,user\u id仅显示为一个值。如何做到这一点 我的php代码 $sql=mysqli_query($con,"select * FROM mohamiusermeta where meta_key='websiteurl' or meta_key='profile_photo' or meta_key = '

我有一个包含3列的表
(用户id、元键、元值)

我下面的代码根据需要获取json数据以显示为
(key=value)
,但我也希望像这样显示
用户id
(用户id=value)
。现在,
user\u id
仅显示为一个值。如何做到这一点

我的php代码

 $sql=mysqli_query($con,"select * FROM mohamiusermeta  where    meta_key='websiteurl' or meta_key='profile_photo' or meta_key = 'Office' or meta_key='address_user' or meta_key='agentarea' or meta_key='offertext' or meta_key='officename' or meta_key='cover_photo' or meta_key='membertype'");
$newarray = array();

while($row=mysqli_fetch_assoc($sql))
{

  $output[$row['meta_key']] = $row['meta_value'];
 $newarray[]=$output;


 }

 json_encode($newarray);

 echo(json_encode($newarray,JSON_UNESCAPED_UNICODE));

 mysqli_close();
?> 
我的json结果显示如下

   meta_key: meta_value
   meta_key = meta_value
user_id= id value
{
  meta_key: meta_value
  meta_key: meta_value
 ....
 user_id= id value
   {
  meta_key: meta_value
 meta_key: meta_value
我想用user\u id列将结果分组,如下所示

   meta_key: meta_value
   meta_key = meta_value
user_id= id value
{
  meta_key: meta_value
  meta_key: meta_value
 ....
 user_id= id value
   {
  meta_key: meta_value
 meta_key: meta_value

您可以使用多维数组对元数据进行分组:

while ($row = mysqli_fetch_assoc($sql)) {
    if (!array_key_exists($row['user_id'], $newarray)) {
        $newarray[$row['user_id']] = [];
    }
    $newarray[$row['user_id']][$row['meta_key']] = $row['meta_value'];
}
这将创建以下输出:

{'123':{'key1': 'value1', 'key3':'value3'}, 'user2':{'key2':'value2'}}
因此,在此解决方案中,
用户id
本身将成为元值的关键,所有值都将按其
用户id
分组。如果还希望使用键
用户id
指定
用户id
,可以将其添加到
用户id
元键数组的初始化中:

if (!array_key_exists($row['user_id'], $newarray)) {
    $newarray[$row['user_id']] = ['user_id' => $row['user_id']];
}
这将产生以下结果:

{'123':{'user_id': '123', 'key1': 'value1', 'key3':'value3'}, 'user2':{'user_id': 'user2', 'key2':'value2'}}

您可以使用多维数组对元数据进行分组:

while ($row = mysqli_fetch_assoc($sql)) {
    if (!array_key_exists($row['user_id'], $newarray)) {
        $newarray[$row['user_id']] = [];
    }
    $newarray[$row['user_id']][$row['meta_key']] = $row['meta_value'];
}
这将创建以下输出:

{'123':{'key1': 'value1', 'key3':'value3'}, 'user2':{'key2':'value2'}}
因此,在此解决方案中,
用户id
本身将成为元值的关键,所有值都将按其
用户id
分组。如果还希望使用键
用户id
指定
用户id
,可以将其添加到
用户id
元键数组的初始化中:

if (!array_key_exists($row['user_id'], $newarray)) {
    $newarray[$row['user_id']] = ['user_id' => $row['user_id']];
}
这将产生以下结果:

{'123':{'user_id': '123', 'key1': 'value1', 'key3':'value3'}, 'user2':{'user_id': 'user2', 'key2':'value2'}}