【问题标题】:Convert simple array to new data structure using PHP [closed]使用 PHP 将简单数组转换为新数据结构 [关闭]
【发布时间】:2021-01-30 20:23:40
【问题描述】:

我在 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",
        "radio_id_1": "1",
        "question_id_2": "2"
    },
    {
        "user_roles_id": "1",
        "hidden_courses_assessments_id": "1",
        "hidden_question_id_1": "1",
        "radio_id_2": "2",
        "question_id_2": "5"
    },
    {
        "user_roles_id": "1",
        "hidden_courses_assessments_id": "1",
        "hidden_question_id_1": "1",
        "radio_id_3": "3",
        "question_id_3": "9"
    }
]

这两个元素总是相同的,但其他元素在每两个元素之后分开。

我该怎么做?

【问题讨论】:

  • 为什么"hidden_question_id_1":"1" 在每个子数组中?
  • array_shift 两次然后array_chunk 在 2 上然后循环并构建更改键名的新数组。
  • @u_mulder 这是我从服务器得到的响应
  • hidden_question_id_ 不出现在第一个数组中。

标签: php arrays data-structures


【解决方案1】:

因此,从数组中提取两个元素,并将数组的其余部分拆分为大小为 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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    相关资源
    最近更新 更多