Php 如何替换键“的值?”;程序“U id”;在JSON数组中?

Php 如何替换键“的值?”;程序“U id”;在JSON数组中?,php,arrays,json,Php,Arrays,Json,我已经通读了一些答案,解决方案似乎很简单,但就是不起作用 下面的命令在新数组的末尾生成“null”: //Original Array from db $outArray[] = '[{"id":"1","user_id":"1","program_id":"replace_1,replace_2,replace_3,replace_4,replace_5"}]'; //replacement key with value from string delimited by comma $pro

我已经通读了一些答案,解决方案似乎很简单,但就是不起作用

下面的命令在新数组的末尾生成“null”:

//Original Array from db
$outArray[] = '[{"id":"1","user_id":"1","program_id":"replace_1,replace_2,replace_3,replace_4,replace_5"}]';

//replacement key with value from string delimited by comma
$program_id= 'replace_1,replace_2,replace_3,replace_4,replace_5';
$string = $program_id; 
$str_arr = explode (",", $string);
$data['program_id'] = $str_arr[0];
$replacement_key_with_value = json_decode($data); //{"program_id":"replace_1"}

//replace 'program_id' value in Original Array
$arrayData = json_decode($outArray, true);
$newArrayData = array_replace($arrayData, $replacement_key_value);
$outArray[] = json_encode($newArrayData);

echo $outArray; //[{"id":"1","user_id":"1","program_id":"replace_1,replace_2,replace_3,replace_4,replace_5},"null"]

您的代码示例中有一些错误,但如果我没有弄错,此代码将使用新的JSON字符串检查JSON字符串中的键program_id

<?php
    //Original json string from db
    $jsonString= '[{"id":"1","user_id":"1","program_id":"replace_1,replace_2,replace_3,replace_4,replace_5"}]';
    $myNewProgramID = 'New Program ID Value';
    //replace 'program_id' value in Original Array
    $arrayData = json_decode($jsonString, true);
    if (count($arrayData)) {
        $newArr = [];
        foreach ($arrayData as $key => $item) {
            $newArr[$key] = $item;
            if (isset($newArr[$key]['program_id'])) {
                $newArr[$key]['program_id'] = $myNewProgramID;
            }
        }
        $arrayData = $newArr;
    }
    $outArray = json_encode($arrayData);
    echo $outArray; //[{"id":"1","user_id":"1","program_id":"New Program ID Value"}]
    exit;
?>

运行代码会导致一系列错误:

json_decode()要求参数1为字符串,数组给定

未定义变量:替换\u键\u值

数组_replace():参数1应为数组,给定null

数组到字符串的转换

假设您有JSON字符串,您必须做的第一件事就是解码JSON。然后你可以替换任何东西。e、 g:

<?php

$raw = '{"program_id": "p1,p2,p3,p4"}';

$decoded = json_decode($raw);

$decoded->program_id = str_replace("p2", "p5", $decoded->program_id);

$encoded = json_encode($decoded);

echo $encoded;

您应该将json转换为数组,然后修改所需的元素:

//Original Array from db
$outArray = '[{"id":"1","user_id":"1","program_id":"replace_1,replace_2,replace_3,replace_4,replace_5"}]';
$arrayData = json_decode($outArray, true);
var_dump($arrayData);
echo "<BR><BR>";

$program_id= 'replace_1,replace_2,replace_3,replace_4,replace_5';
$string = $program_id;
$str_arr = explode (",", $string);
$outArray = $arrayData;
$outArray[0]['program_id'] = $str_arr[0];
var_dump($outArray);
//数据库中的原始数组
$outArray='[{“id”:“1”,“用户id”:“1”,“程序id”:“替换_1,替换_2,替换_3,替换_4,替换_5”}];
$arrayData=json_decode($outArray,true);
var_dump($arrayData);
回声“

”; $program_id='replace_1,replace_2,replace_3,replace_4,replace_5'; $string=$program\u id; $str_arr=explode(“,”,$string); $outArray=$arrayData; $outArray[0]['program_id']=$str_arr[0]; 变量转储($outArray);
您希望输出是什么样的?json_decode($data)$data应该是一个json格式的字符串,而不是一个数组,它会为您提供这组信息,以确保其正确性。