Php 每N个键使用新的键名将一维键值数组转换为二维kay值数组

Php 每N个键使用新的键名将一维键值数组转换为二维kay值数组,php,arrays,Php,Arrays,我有一个如下所示的数组: 我需要将其转化为: 关于$startArray需要了解的是,它是动态的,基于表单上提交的人数。但每个人始终只有这三个字段(custom\u 12,custom\u 13,custom\u 14又称fName,lName,电子邮件)。因此,如果有5个成员,则第5个成员fName将是start数组中的键custom_12-5 我一直在stackoverflow上寻找一个类似这样的问题,但我找不到。创建$endArray所采取的步骤和可能的数组函数或任何其他内容是什么?实

我有一个如下所示的数组:

我需要将其转化为:

关于
$startArray
需要了解的是,它是动态的,基于表单上提交的人数。但每个人始终只有这三个字段(
custom\u 12
custom\u 13
custom\u 14
又称
fName
lName
电子邮件
)。因此,如果有5个成员,则第5个成员
fName
将是start数组中的键
custom_12-5


我一直在stackoverflow上寻找一个类似这样的问题,但我找不到。创建
$endArray
所采取的步骤和可能的数组函数或任何其他内容是什么?

实际上有一个内置函数:

例如,
array\u chunk($startArray,3)
将为您的新数组提供基础,然后您只需遍历它并重命名键


或者,自己迭代数组,根据当前迭代的索引将值添加到新数组中。

多亏了Charlie的建议,我想出了这个方法

$startArray = array(
    'custom_12' => 'john',
    'custom_13' => 'johny',
    'custom_14' => 'john@johny.com',
    'custom_12-2' => 'bob',
    'custom_13-2' => 'bobby',
    'custom_14-2' => 'bob@bobby.com',
    'custom_12-3' => 'don',
    'custom_13-3' => 'donny',
    'custom_14-3' => 'don@donny.com'
);

$middleArray = array_chunk($startArray, 3);

$endArray = array_map(function($val) {
    return array(
        'fName' => $val[0],
        'lName' => $val[1],
        'email' => $val[2]
    ); 
}, $middleArray);

echo "<pre>";
    print_r($endArray);
echo "</pre>";
$startArray=array(
“custom_12”=>“john”,
“custom_13”=>“johny”,
'自定义_14'=>'john@johny.com',
“自定义_12-2”=>“bob”,
“自定义_13-2”=>“bobby”,
'自定义_14-2'=>'bob@bobby.com',
'自定义_12-3'=>'不',
“custom_13-3”=>“donny”,
'自定义_14-3'=>'don@donny.com'
);
$middleArray=数组块($startArray,3);
$endArray=array\u映射(函数($val){
返回数组(
“fName”=>$val[0],
“lName”=>$val[1],
'email'=>$val[2]
); 
}美元阵列);
回声“;
打印(endArray);
回声“;
输出正是我想要的:


谢谢,我正在寻找这样的函数,但找不到。我使用
array\u chunk
创建了一个中间数组,然后使用
array\u map
对其进行转换。我会把我的结果公布出来。