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

时间:2018-01-05 13:35:54

标签: php json

我有一个包含3列(user_id, meta_key, meta_value)的表格。

我的下面的代码根据需要获取json数据以显示为(key = value),但我也希望显示user_id列,如此(user_id=value)。现在user_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列分组,如下所示

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

1 个答案:

答案 0 :(得分:2)

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

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'}}

因此,在此解决方案中,user_id 本身将成为元值的关键,所有值将在其user_id上进行分组。如果您还希望使用密钥user_id指定user_id,则可以将其添加到user_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'}}