更改json键名动态

时间:2018-08-08 20:47:52

标签: php json

我根据我的sql查询生成了一个json,这里是我的json输出,我列出了一些json代码

  "42":"",
  "field_id_25":"",
  "43":null,
  "field_ft_25":null,
  "44":"",
  "field_id_26":"",
  "45":null,
  "field_ft_26":null,
  "46":"",
  "field_id_27":"",
  "47":null,
  "field_ft_27":null,

我必须根据我的数据库表值更改json密钥 field_ft _ $$

|---------------------|------------------|
|      field id       |     field name   |
|---------------------|------------------|
|     field_id_27     | meta_description |
|---------------------|------------------|

我用php编码,然后我不知道该怎么完成。.

<?php

  $con=mysqli_connect("localhost","root","","penn");
  if (!$con) {
    echo "Failed";
  }


  // Retrive Data From WebLog Title
  $sql="SELECT * FROM `exp_weblog_titles` LEFT JOIN `exp_weblog_data` ON `exp_weblog_data`.`entry_id` = `exp_weblog_titles`.`entry_id` WHERE exp_weblog_titles.weblog_id='13' LIMIT 2 ";
  $query=mysqli_query($con,$sql);

  while ($row=mysqli_fetch_array($query)) 
  {
    $data[] = $row;
  }


    // Convert The Weblog title data to json
    $json_string = json_encode($data, JSON_PRETTY_PRINT);
    echo $json_string;


  // Retrive web_log_field_List as a array from database
  $sql1="SELECT field_id,field_name FROM exp_weblog_fields";
  $query1=mysqli_query($con,$sql1);

  while ($row1=mysqli_fetch_array($query1))   {
     $web_log_field[$row1['field_id']] = $row1['field_name'];
  }  
  // echo $web_log_field[21];


?>

示例-我需要根据我的数据库值将“ field_ft_27”:null更改为“ meta_description”:null和其他

1 个答案:

答案 0 :(得分:1)

使用正则表达式提取field_ft_XX的适当部分并获取field_id_XX的相应$web_log_field元素。然后,您可以删除旧密钥并添加替换密钥。

foreach ($data as &$row) {
    foreach ($row as $key => $value) {
        if (preg_match('/^field_ft_(\d+)$/', $key)) {
            $idkey = "field_id_$key[1]";
            if (isset($web_log_field[$idkey])) {
                $row[$web_log_field[$idkey]] = $value;
                unset($row[$key]);
            }
        }
    }
}