如何向PHP对象内部的变量写入值?
修改PHP数组中嵌套对象的属性值
看起来你是想修改PHP数组里嵌套的stdClass对象的属性,尤其是那个存为JSON字符串的rota_entry字段对吧?我来一步步给你讲怎么操作:
1. 直接修改对象的普通属性
首先,你的数据结构是一个数组,第一个元素是stdClass对象,要修改对象里的普通属性(比如rota_name、rota_owner_name)很简单,直接用->访问属性并赋值就行:
// 假设你的数组变量叫 $myArray // 修改 rota_name $myArray[0]->rota_name = "Updated Tea & Coffee Rota"; // 修改 rota_owner_name $myArray[0]->rota_owner_name = "12";
2. 处理嵌套的JSON格式属性(rota_entry)
rota_entry是一个JSON字符串,不是直接可操作的数组/对象,所以需要先解码,修改后再编码回去:
步骤1:解码JSON为PHP数组
用json_decode()把JSON字符串转成关联数组(第二个参数传true),这样更方便修改:
// 解码JSON字符串为关联数组 $rotaEntries = json_decode($myArray[0]->rota_entry, true); // 可选:检查解码是否成功 if ($rotaEntries === null) { die("JSON解码失败:" . json_last_error_msg()); }
步骤2:修改数组里的内容
现在你可以像操作普通PHP数组一样修改里面的字段了,比如:
// 修改 rota_entry0 的 person 值 $rotaEntries['rota_entry0']['person'] = "10"; // 修改 rota_entry1 的日期 $rotaEntries['rota_entry1']['rota_assignment_date'] = "2018-04-09 09:30:00"; // 新增一个rota条目(如果需要的话) $rotaEntries['rota_entry3'] = [ 'person' => '15', 'rota_assignment_date' => '2018-04-22 20:17:48', 'rota_role' => 'Lead' ];
步骤3:重新编码为JSON并赋值回对象
修改完成后,用json_encode()把数组转回JSON字符串,再赋值给对象的rota_entry属性:
$myArray[0]->rota_entry = json_encode($rotaEntries);
这样就完成了所有属性的修改啦!如果之后需要验证结果,可以用var_dump($myArray[0])查看修改后的对象内容。
内容的提问来源于stack exchange,提问作者user1616338
相关产品推荐
相关产品推荐

