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

PHP中将$_POST数据整理为指定结构多维数组求助

解决方法:整理POST数据到指定数组结构

我来帮你搞定这个需求,思路其实很清晰,我们可以通过遍历POST数据、提取关键标识的方式来实现目标数组结构。

步骤1:初始化目标数组

首先按照要求创建初始的result_array:

// 初始化结果数组
$result_array = [];
$result_array[1] = ["Title", "Color"];

步骤2:遍历POST数据并整理

我们可以通过识别id_前缀的字段,提取出对应的数字编号,再用这个编号匹配对应的title_和colour_字段值,最后添加到目标数组中:

// 遍历$_POST中的所有字段
foreach ($_POST as $key => $value) {
    // 只处理以id_开头的字段(这是每个条目的唯一标识)
    if (str_starts_with($key, 'id_')) {
        // 提取数字编号,比如从id_228得到228
        $itemId = str_replace('id_', '', $key);
        
        // 检查对应的title和colour字段是否存在,避免报错
        if (isset($_POST["title_{$itemId}"]) && isset($_POST["colour_{$itemId}"])) {
            // 把title首字母大写(和你示例中的格式一致)
            $formattedTitle = ucfirst($_POST["title_{$itemId}"]);
            $colour = $_POST["colour_{$itemId}"];
            
            // 将数据添加到结果数组
            $result_array[$itemId] = [$formattedTitle, $colour];
        }
    }
}

补充说明

  • 这里用到的str_starts_with()是PHP 8.0+的函数,如果你的PHP版本低于8.0,可以替换成substr($key, 0, 3) === 'id_'来判断前缀。
  • 添加isset()判断是为了防止POST数据中缺失某个title或colour字段时出现Undefined index错误,让代码更健壮。
  • ucfirst()函数用于将title的首字母大写,和你给出的示例格式完全匹配(比如second变成Second)。

运行这段代码后,$result_array就会完全符合你需要的结构啦。

内容的提问来源于stack exchange,提问作者Abilash Erikson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:38:56