PHP数组修改:如何实现card字段的多元素嵌套结构?
解决思路与修正代码
原代码问题分析
- 循环中每次重新赋值
$data,导致card始终只保留最后一次循环的单个对象,而非数组结构 - 最终将
$data和$data2合并为数组编码,生成了不符合预期的双层数组输出
修正方案
先初始化包含add_order基础结构的数组,将card字段预设为空数组,再通过循环向card数组中添加重复结构的元素,最后直接编码目标结构即可:
// 初始化基础结构,将card设为空数组 $data = [ "add_order" => [ "session_id" => "", "company_code" => "", "session" => "", "card" => [] ] ]; // 循环向card数组中添加元素(示例循环3次,对应你期望的3个card项) for ($i = 0; $i < 3; $i++) { $data["add_order"]["card"][] = [ "_key_shipping" => "", "_key_customer" => ["customercode" => ""], ]; } // 编码成目标JSON结构(外层是数组,包含一个add_order对象) $json_send = json_encode([$data]); file_put_contents('data.json', $json_send);
关键说明
- 先搭建好
add_order的固定结构,把card初始化为空数组,避免循环中重复覆盖整个结构 - 使用
$data["add_order"]["card"][]的语法,每次循环自动向数组尾部追加新的card对象 - 最后将
$data包裹到一个数组中再编码,完全匹配你期望的外层数组结构
内容的提问来源于stack exchange,提问作者imp
相关产品推荐
相关产品推荐

