Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中对多个表单字段数组进行排序?_Php_Arrays_Forms_Sorting - Fatal编程技术网

如何在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;
        }   
    }
}