php从html表单数组重新格式化数组表示形式
我不知道如何寻找我面临的问题,所以这就是为什么我在这里问 我想知道是否有一个本机php函数来转换我从html表单获得的以下数组: 原始数组 所需阵列 我知道这可以通过循环实现,但这不是我想要的 PS(不是我的主要问题,只是一个附带问题):如何在stackoverflow中批量格式化代码?总是4个空格吗?如何更快地执行格式化php从html表单数组重新格式化数组表示形式,php,arrays,format,Php,Arrays,Format,我不知道如何寻找我面临的问题,所以这就是为什么我在这里问 我想知道是否有一个本机php函数来转换我从html表单获得的以下数组: 原始数组 所需阵列 我知道这可以通过循环实现,但这不是我想要的 PS(不是我的主要问题,只是一个附带问题):如何在stackoverflow中批量格式化代码?总是4个空格吗?如何更快地执行格式化 编辑:PS不是主要问题,它更多的是一个旁注,@riggsfully已经回答了这个问题。这正是你需要的 for ($x = 0; $x < count($array['a
编辑:PS不是主要问题,它更多的是一个旁注,@riggsfully已经回答了这个问题。这正是你需要的
for ($x = 0; $x < count($array['amount']); $x ++) {
$arr[$x] = [
'product_template_id' => $array['product_template_id'][$x],
'amount' => $array['amount'][$x],
];
}
for($x=0;$x$array['product_template_id'][$x],
'amount'=>$array['amount'][$x],
];
}
请参见此处的工作示例,作为您可以使用的概念证明:
$keys=array\u keys($array);
//对于
这是
但在实践中,对于如此简单的问题,有太多的开销
编辑:
在这里,我压缩(从每个数组中获取一个对应的元素,并创建一个包含这些元素的数组)所有子数组。这是通过使用其属性完成的:
这个函数的一个有趣的用途是构造一个数组数组,通过使用NULL作为回调函数的名称可以很容易地执行
由于可以接受任意数量的数组,因此我为其提供了。不,没有任何本机函数可以执行此操作。你必须使用exists PHP函数并添加一些逻辑(for loop等…)Format=
CTRL+K
如果你需要经常这样做,你可以自己创建函数。你可以这样做,一次完成,使用sublime IDE,从package installer安装插件codeFormatter,并创建一个伪.PHP文件,将代码粘贴到其中,然后按CTRL+ALT+F格式化代码并从那里复制代码,将其粘贴到问题中,然后选择要格式化的代码并按CTRL+K。就是这样。@DominikVogt,祝你好运:D:D:D:D:D阅读OP的最后一行。这不是你给出答案的问题。:-P哈哈,我现在看到了。如果你的数组总是有相同的长度,当然可以不用循环完成,但事实并非如此,不是吗?我如何在stackoverflow中批量格式化代码?总是4个空格吗?如何更快地执行格式化?这是个问题。Op说,“我知道这可以通过一个循环来完成,但这不是我想要的。”。所以他知道怎么做,他想把代码格式化成这样。OP根本不需要代码。OP需要步骤或方法来格式化SO中的代码。实际上我也想知道,这4个空格的废话是在浪费宝贵的时间!是的,这很简单,如果需要更多的格式,比如IDE,那么请跟随我的完整注释。@mickmackusa,这有时被称为splat操作符
。它用于参数解包。你可以阅读更多信息。请点击此答案!我受到了这项技术的启发,一直在研究和试验它。我已经修改了OP的输入数组,并使用了您的方法,添加了一堆注释,并在本文中提供了一些链接。一些直接链接:,
$array = [
'0' => [
'product_template_id' => '1',
'amount' => '50'
],
'1' => [
'product_template_id' => '2',
'amount' => '100'
]
]
for ($x = 0; $x < count($array['amount']); $x ++) {
$arr[$x] = [
'product_template_id' => $array['product_template_id'][$x],
'amount' => $array['amount'][$x],
];
}
$keys = array_keys($array);
// For < PHPv5.6
// $zip = call_user_func_array('array_map', array_merge([null], $array));
$zip = array_map(null, ...array_values($array));
$result = array_map(function ($item) use ($keys) {
return array_combine($keys, $item);
}, $zip);