【发布时间】:2026-02-05 06:30:01
【问题描述】:
我正在尝试使用array_slice 循环遍历 JSON 对象,然后从中创建另一个 JSON。但是由于某种原因,每个循环都会增加前一个对象。
例如,如果我有这个 JSON
{
"message":[
{"id":1},
{"id":2}
]
}
我使用array_slice循环并打印id键,结果将是
id 1
id 1, id 2
我希望它成为
id 1
id 2
这就是我的代码
$result = '{"message":[{"id":1},{"id":2}]}';
$array = json_decode($result, true);
$json_response = array();
foreach (array_slice($array['message'], 0, 10) as $slot) {
$row_array['buttons'][] = array(
'caption' => $slot['id'],
);
array_push($json_response, $row_array);
}
$final_json = [
"elements" => $json_response
];
这是一个工作演示
预期的结果是
{
"elements": [
{
"buttons": [
{
"caption": 1
}
]
},
{
"buttons": [
{
"caption": 2
}
]
}
]
}
【问题讨论】:
-
您能否添加一个示例,说明您真正想要在这里得到什么结果?我目前看不到这里应该有什么 point 切片。
-
切片的重点是,如果我有例如 20 个我只想显示 10 个的 id,我想限制结果
-
您不需要
[]中的$row_array['buttons'][] =,因为这会继续将值添加到列表中。不确定仅删除它是否对您有用。 -
您想要多个
buttons键还是一个键? -
只需添加 $row_array['buttons'] = [];之前 $row_array['buttons'][] = array(...