我有一个包含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
答案 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'}}