在PHP中安排$\u POST到多维数组

在PHP中安排$\u POST到多维数组,php,multidimensional-array,Php,Multidimensional Array,我在提交表单时有一个表单,如果打印$\u POST,我将得到如下输出 [type] =>'new', [class] =>'10', [div] =>c, [id_228] => 228, [title_228]=> First, [colour_228]=> red, [id_229] => 229, [title_229]=> second, [colour_229]=> blue, [id_230] => 230, [ti

我在提交表单时有一个表单,如果打印$\u POST,我将得到如下输出

    [type] =>'new',
[class] =>'10',
[div] =>c,
[id_228] => 228,
[title_228]=> First,
[colour_228]=> red,
[id_229] => 229,
[title_229]=> second,
[colour_229]=> blue,
[id_230] => 230,
[title_230]=> third,
[colour_230]=> yellow,
[id_231] => 231,
[title_231]=> fourth,
[colour_231]=> orange,

现在我必须将这个输出存储到一个结果数组中。请查看结果数组

result_array[1]=array("Title", 'Color')
因此,在这个结果数组中,我必须像这样添加$\u POST

result_array[228]=array("First","red")
result_array[229]=array("Second","blue")
result_array[230]=array("Third","yellow")
result_array[231]=array("Fourth","red")

请帮助。

您只需将其循环并准备一个新阵列即可

$result = array();
foreach ($_POST as $key => $value) {
    list($title, $key) = explode('_', $key);
    if (!is_array($result[$key])) $result[$key] = array();

    $result[$key][$title] = $value;
}

var_dump($result);

希望这有帮助。

第一步应该是用这些数据创建一个外观合适的数组: 现在你可以添加更多的逻辑。。。如果您希望数据采用您建议的格式,您可以这样做

$result = [];
foreach($resultArray as $item) { 
    $result[] = [$item['title'], $item['colour']];
}

编辑: 自从你加上

[type] =>'new',
[class] =>'10',
[div] =>c,
您可能希望创建一个应添加的允许字段列表,可能类似于:

// Transform data into a proper format
$resultArray = [];
$allowedFields = ['id', 'title', 'colour'];
foreach($post as $key => $val) {
    $key = explode('_',$key);
    if(in_array($key[0], $allowedFields)) {
        $resultArray[$key[1]][$key[0]] = $val;
    }
}

发出

Array
(
    [228] => Array
        (
            [0] => First
            [1] => red
        )

    [229] => Array
        (
            [0] => second
            [1] => blue
        )

    [230] => Array
        (
            [0] => third
            [1] => yellow
        )

    [231] => Array
        (
            [0] => fourth
            [1] => orange
        )

)

这是表格吗?您应该在输入的name属性中放置id,这样就不必再进行任何数组修改,ala
name=“input[][name]
正是Ghost所说的。这是一个。您的输入数据格式不好,需要进一步处理。这是由其他人创建的复杂表单的输出。现在我正在进行故障排除。请帮助是的,我知道这是一个问题。但目前我必须解决此问题。之后,我们将尝试更改表单。按
分解名称de>并决定要做什么。但是这里的$title是什么?list($title,$key)title指的是数组_键,其值为id、title或color之一。这只是我给出的一个名称,您可以根据自己的方便进行更改。
$arr= ["id_228" => 228, "title_228" => "First",
"colour_228"=> "red",
"id_229" => 229,
"title_229"=> "second",
"colour_229"=> "blue",
"id_230" => 230,
"title_230"=> "third",
"colour_230"=> "yellow",
"id_231" => 231,
"title_231"=> "fourth",
"colour_231"=> "orange" ];

foreach($arr as $key => $value) {
    $d = explode( '_', $key );
    if(true == is_numeric( $value)) {
        continue;
    }
    $c[$d[1]][]= $value ;
}
print_r($c);
Array
(
    [228] => Array
        (
            [0] => First
            [1] => red
        )

    [229] => Array
        (
            [0] => second
            [1] => blue
        )

    [230] => Array
        (
            [0] => third
            [1] => yellow
        )

    [231] => Array
        (
            [0] => fourth
            [1] => orange
        )

)