问题描述
我在 PHP 中有以下数组:
{
"roles_id": "1","assessments_id": "1","question_id_1": "1","radio_id_1": "1","question_id_2": "2","radio_id_2": "5","question_id_3": "3","radio_id_3": "9"
}
我想用这些数据创建一个数据结构,就像下面的例子一样:
[
{
"user_roles_id": "1","hidden_courses_assessments_id": "1","hidden_question_id_1": "1","question_id_2": "2"
},{
"user_roles_id": "1","radio_id_2": "2","question_id_2": "5"
},"radio_id_3": "3","question_id_3": "9"
}
]
这两个元素总是相同的,但其他元素在每两个元素之后分开。
我该怎么做?
解决方法
因此,从数组中提取两个元素,并将数组的其余部分拆分为大小为 2 的块:
$s = '{"roles_id":"1","assessments_id":"1","question_id_1":"1","radio_id_1":"1","question_id_2":"2","radio_id_2":"5","question_id_3":"3","radio_id_3":"9"}';
$a = json_decode($s,true);
$baseData = [
"user_roles_id" => array_shift($a),"hidden_courses_assessments_id" => array_shift($a),// I don't know what's this values so I just put it here
"hidden_question_id_1" => "1",];
$result = [];
$key = 1;
foreach (array_chunk($a,2) as $chunk) {
$result[] = array_merge($baseData,["radio_id_$key" => $chunk[0],"question_id_$key" => $chunk[1]]);
++$key;
}
print_r($result); // apply `json_encode` if needed
小提琴here。