在PHP中安排$\u POST到多维数组
我在提交表单时有一个表单,如果打印$\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
[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
)
)