You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:37:53