如何使用PHP在JSON数组列表中重复值并设置不同键
解决PHP数组中值重复到不同键的问题
我懂你的需求啦——就是要把现有JSON数组里的相同值,用不同的键来重复存储,对吧?咱们直接上手修改代码:
原代码与输出
首先先回顾下你的原始代码和输出:
$output = array( array("0"=>1,"name"=>"raj","regno"=>12), array("0"=>2,"name"=>"raja","regno"=>15) ); echo json_encode($output);
对应的JSON输出:
[{"0":1,"name":"raj","regno":12},{"0":2,"name":"raja","regno":15}]
修改后的实现方案
我们可以通过遍历数组的方式,给每个子数组添加新的键,对应已有的值。比如我假设你想把"0"键的值重复到"id",把"name"的值重复到"username",代码可以这么写:
方法1:引用遍历修改原数组
这种方式直接修改原数组,操作起来更简洁:
$output = array( array("0"=>1,"name"=>"raj","regno"=>12), array("0"=>2,"name"=>"raja","regno"=>15) ); // 遍历每个子元素,添加重复的键值对 foreach ($output as &$item) { // 将"0"对应的值赋值给新键"id" $item["id"] = $item["0"]; // 将"name"对应的值赋值给新键"username" $item["username"] = $item["name"]; // 如果需要重复regno,只需添加这行 // $item["registration_number"] = $item["regno"]; } echo json_encode($output);
方法2:创建新数组(不修改原数组)
如果你不想改动原数组,也可以创建一个新数组来存储结果,更安全:
$output = array( array("0"=>1,"name"=>"raj","regno"=>12), array("0"=>2,"name"=>"raja","regno"=>15) ); $newOutput = []; foreach ($output as $item) { $newItem = $item; $newItem["id"] = $item["0"]; $newItem["username"] = $item["name"]; $newOutput[] = $newItem; } echo json_encode($newOutput);
最终输出
两种方法都会得到如下JSON结果(以重复"0"和"name"为例):
[{"0":1,"name":"raj","regno":12,"id":1,"username":"raj"},{"0":2,"name":"raja","regno":15,"id":2,"username":"raja"}]
如果你的需求是重复其他键的值,只需要在循环里调整新增的键名和对应的原键就行,非常灵活~
内容的提问来源于stack exchange,提问作者user5443928
相关产品推荐
相关产品推荐

