Php 拆分每个数组元素并转换为多维数组?

Php 拆分每个数组元素并转换为多维数组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,提交表单后,我有一个数组帖子: $POST = Array ( [29#487_Mon] => 90, [29#487_Mon_power] => 50, [30#487_Thur]=>80, [30#487_Thur_power]=>90, [41#487_Wed]=>10, [41#487_Wed_power]=>20, ) 我想将$POST数组转换为更友好的格式,如下所示: $Transform = a

提交表单后,我有一个数组帖子:

$POST = Array
(
    [29#487_Mon] => 90,
    [29#487_Mon_power] => 50,
    [30#487_Thur]=>80,
    [30#487_Thur_power]=>90,
    [41#487_Wed]=>10,
    [41#487_Wed_power]=>20,

)
我想将$POST数组转换为更友好的格式,如下所示:

$Transform = array(
    [29]=>array(
            [487_Mon] => 90,
            [487_Mon_power] => 50
            ),
    [30]=>array(
            [487_Thur]=>80,
            [487_Thur_power]=>90
            ),
    [41]=>array(
            [487_Wed]=>10,
            [487_Wed_power]=>20
            )
    )

有人知道如何做到这一点吗?

正如@Gordon在评论中指出的,此外,您可以通过以下方式做到:

<?php
$Transform = array();
foreach($POST as $key => $val){
 $key_parts = explode("#", $key); //spliting 29#487_Mon to 29 and 487_Mon
 /*
 $key_parts[0] = 29
 $key_parts[1] = 487_Mon
 */
 $Transform[$key_parts[0]][$key_parts[1]] = $val;
}
echo  '<pre>';
print_r($Transform);
echo  '</pre>';
?>


请参见@Gordon在评论中指出的,此外,您可以通过以下方式完成:

<?php
$Transform = array();
foreach($POST as $key => $val){
 $key_parts = explode("#", $key); //spliting 29#487_Mon to 29 and 487_Mon
 /*
 $key_parts[0] = 29
 $key_parts[1] = 487_Mon
 */
 $Transform[$key_parts[0]][$key_parts[1]] = $val;
}
echo  '<pre>';
print_r($Transform);
echo  '</pre>';
?>


参见

这是对@Gordon所说内容的扩展。如果@Gordon希望提交他的评论作为回答,我将收回我的回答

测试和工作









这是对@Gordon所说内容的扩展。如果@Gordon希望提交他的评论作为回答,我将收回我的回答

测试和工作









将表单更改为使用数组表示法,例如name=“29[487\u Mon]”这样就可以了automatically@Gordonit不行!确实要格式化表单元素的名称吗?
$\u POST
中的IIRC数字索引不起作用或可能导致问题。使用诸如“transform[29][487\u-Mon]”之类的名称可以避免这种情况。将您的表单更改为使用数组表示法,例如name=“29[487\u-Mon]”就是这样automatically@Gordonit不行!确实要格式化表单元素的名称吗?
$\u POST
中的IIRC数字索引不起作用或可能导致问题。使用诸如
“transform[29][487\u Mon]”之类的名称可以避免这种情况。
您还可以使用
list
函数,即
list($part1,$part2)=explode(“#“,$key,2)
。您还可以使用
list
函数,即
list($part1,$part2)=explode(“,$key,2)