繁体   English   中英

如何在PHP中使用str_replace函数替换数组中的值

[英]How to replace value in array using str_replace function in php

我在mysql数据库表中有一个json格式的数据,如下所述。

 {
 "dataType": "mis_type",
 "diceCode": "20070100102",
 "forms": {
   "4. Campus": {},
   "7. Classroom": {},
   "1. Details of school": {
          "School_Name": "GOVT. UPG .M.S. KHAGARA",
          "Village_Name": "KHAGARA",
          "Block_Name": "MOHAN PUR",
          "Dist_Name": "DEOGHAR",
          "Type_of_School": "DEPARTMENT OF EDUCATION",
          "Category": "PRIMARY WITH UPPER PRIMARY",
          "No_of_Student": 209,
          "No_of_Section": 8,
          "No_of_Classroom": 5,
          "Govt_Teacher": 2,
          "Para_Teacher": 3,
          "Other_Teacher": 0,
          "Total_Teacher": 5,
          "Total_Toilet": 2,
          "Total_Urinals": 2
             },
    "6. Drinking Water Source": {},
    "8. Kitchen Shed": {},
    "2. Location of School": {},
    "5. Location of Toilet": {},
    "3. Pollution Status": {
    }
   }
 }

我正在尝试从另一个新值替换“ Total_Toilet”值。 为此,我编写了以下代码。

  $selectQuery = "SELECT `json_data` FROM `abc` WHERE `disc_code`='" . $diseCode . "' AND `type`='mis'";
  $res = $conn->query($selectQuery);
  $jsonvalue = $res->fetch_assoc();
  $jsonvalue = json_decode($jsonvalue['json_data'], true);
  unset($value['Dise_Code']);
  unset($value['OBJECTID']);
  if ($res->num_rows > 0) 
 {
   foreach( $jsonvalue['forms']['1. Details of school'] as $key1 => $value1 )
 {
   echo"<br>"; 
   $key2 = str_replace($jsonvalue['forms']['1. Details of school'] ['Total_Toilet'] , 4, $value1 ) ;
   echo $key2;
 }

代码正在编译,没有任何错误,但是仍然不能使用str_replace函数将以前的值替换为新值。 如果我做错了什么,请指导我,或者如果有人知道任何替代解决方案,请帮助我。

任何帮助,将不胜感激。

确定,请在foreach循环前添加以下行

$jsonvalue['forms']['1. Details of school']['Total_Toilet'] = 4;

并使如下所示的foreach循环

foreach( $jsonvalue['forms']['1. Details of school'] as $key1 => $value1)
{
    echo"<br>"; 
    $key2 = $value1;
    echo $key2;
}

我希望这能帮到您。

请如下更改您的foreach循环以更新数据库

foreach($jsonvalue['forms']['1. Details of school'] as $key1 => $value1 )
{
   $current_value = $jsonvalue['forms']['1. Details of school']['Total_Toilet'];
   $new_value = '12'; // Replace with new value that you want
   echo $new_json = str_replace('"Total_Toilet": '.$current_value.'','"Total_Toilet": '.$new_value.'',$jsonvalue['json_data']);
   echo "<hr>";
   $updateQuery = "update `abc` set `json_data` = '".$new_json."' WHERE `disc_code`='" . $diseCode . "' AND `type`='mis'";
   $res = $conn->query($updateQuery);
}

注意:根据需要编辑查询中的变量,请随时发表评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM