[英]How do I replace the value for key “program_id” in JSON Array?
我已經閱讀了一些答案,解決方案似乎很簡單,但它只是不起作用。
下面在 NEW Array 的末尾產生“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 字符串中的關鍵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 轉換為數組,然后修改所需的元素:
//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);
運行您的代碼會導致一堆錯誤:
json_decode() 期望參數 1 是字符串,給定數組
未定義變量:replacement_key_value
array_replace():預期參數 1 是一個數組,null 給定
數組到字符串的轉換
假設您有 JSON 字符串,您必須做的第一件事是解碼 JSON。 然后你可以替換任何東西。 例如:
<?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;
在上面的示例中,我們正在搜索 p2 並將其替換為 p5。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.