如何在php中对多个表单字段数组进行排序?
我有一个表单提交的数组:如何在php中对多个表单字段数组进行排序?,php,arrays,forms,sorting,Php,Arrays,Forms,Sorting,我有一个表单提交的数组: Array ( [form_key] => 9juTLit5qQbaBb98 [sku] => Array ( [0] => AC25 [1] => AC30 [2] => AC31 ) [product] => Array ( [0] => 95
Array
(
[form_key] => 9juTLit5qQbaBb98
[sku] => Array
(
[0] => AC25
[1] => AC30
[2] => AC31
)
[product] => Array
(
[0] => 95
[1] => 100
[2] => 101
)
[related_product] => Array
(
[0] =>
[1] =>
[2] =>
)
[qty] => Array
(
[0] => 2
[1] => 2
[2] => 2
)
)
有没有一种更好的方法来分类它
Array
(
[form_key] => 9juTLit5qQbaBb98
[0] => Array
(
[sku] => AC25
[product] => 95
[qty] => 2
)
[1] => Array
(
[sku] => AC30
[product] => 100
[qty] => 2
)
[2] => Array
(
[sku] => AC31
[product] => 101
[qty] => 2
)
)
由于您表示可以更改表单,因此可以执行以下操作并获得所需的数组结构:
<input type="text" name="data[0][sku]">
<input type="text" name="data[0][product]">
<input type="text" name="data[0][qty]">
<input type="text" name="data[1][sku]">
<input type="text" name="data[1][product]">
<input type="text" name="data[1][qty]">
数组将位于
$\u POST['data']
中,这便于循环,因为它与表单键
、提交
等隔离。选择一个字段进行循环,然后从其他字段获取值:
foreach($data['sku'] as $key=>$sku){
$product = $data['product'][$key];
$related_product = $data['related_product'][$key];
$qty = $data['qty'][$key];
}
然后您可以构建一个新数组,或者对这些值执行任何操作
$newArray[] = array(
'sku' => $sku,
'product' => $product,
'related_product' => $related_product,
'qty' => $qty
);
非常基本的示例,但应适用于更复杂的数据集
$rs = [];
foreach($_POST as $k1=>$elem) {
if(is_array($elem)) {
foreach($elem as $k2=>$value) {
$rs[$k2][$k1] = $value;
}
}
}
更容易更改表单。您可以让表单这样做吗?您也可以始终使用jQuery更改每个表单值的组织结构—以匹配您想要的内容。显然,您希望在提交代码中验证您的输入,但无论如何您都应该这样做。您的表单实际上是什么样子的?这个解决方案很有趣,因为您在处理提交的数据以安排数据时不需要额外的开销。是的,这正是我应该做的。我可以很容易地在表单中的产品输出循环之前设置迭代器。谢谢
$rs = [];
foreach($_POST as $k1=>$elem) {
if(is_array($elem)) {
foreach($elem as $k2=>$value) {
$rs[$k2][$k1] = $value;
}
}
}