Php 将数组中分解的字符串推送到多维数组中的另一个元素

Php 将数组中分解的字符串推送到多维数组中的另一个元素,php,arrays,Php,Arrays,下面是我的数组的外观 Array ( [confirmshipment] => Array ( [columndata] => Array ( [0] => Array ( [0] => [1] => SG - NOUR RIBTS - CATHUPP [2] => Nour Ribt

下面是我的数组的外观

Array (
    [confirmshipment] => Array (

        [columndata] => Array (

            [0] => Array (

                    [0] => 
                    [1] => SG - NOUR RIBTS - CATHUPP
                    [2] => Nour Ribt Spaxacol Blenk
                    [3] => 800
                    [4] => 
                    [5] => 07-72-7016
                    [6] => Ecoaxan
                    [7] => NOUR RIBTS 07-72-7016
                    [8] => 
                         )

            [1] => Array (

                    [0] => 
                    [1] => SG - NOUR RIBTS - CATHUPP
                    [2] => Nour Ribt Spaxacol Loaxal
                    [3] => 800
                    [4] => 
                    [5] => 07-72-7016
                    [6] => Ecoaxan
                    [7] => NOUR RIBTS 07-72-7016
                    [8] => 

                         )

                              )

    [myCheckboxes] => 1,1
    [panelnumberx] => 0
                                )
       )                                
这是通过一个
$\u POST
ajax响应/
$confirmShipping=$\u POST['confirmShipping']/
$.post(ajaxurl,{confirmShipping:{columndata,MyCheckBox,panelnumberx}}

现在我要做的是将
mycheckbox
columndata
分组(它们总是相同的数组计数)

我可以很容易地使我的复选框成为一个数组

 $checkboxes = explode(',', $params['confirmshipment']['myCheckboxes']);
创建新的
$复选框
数组

Array
(
    [0] => 1
    [1] => 1
)
我还尝试在foreach循环中使用
和$
引用来修改原始数组

$c = 0;
foreach ($checkboxes as $checked) {
foreach ($params as $key['columndata'] => &$value) {
    $value['columndata']['ooscheck'][$c] = $checked;
    $c++;
}
}
让它看起来像这样

Array (
    [confirmshipment] => Array (

        [columndata] => Array (

            [0] => Array (

                    [0] => 
                    [1] => SG - NOUR RIBTS - CATHUPP
                    [2] => Nour Ribt Spaxacol Blenk
                    [3] => 800
                    [4] => 
                    [5] => 07-72-7016
                    [6] => Ecoaxan
                    [7] => NOUR RIBTS 07-72-7016
                    [8] => 
                         )

            [1] => Array (

                    [0] => 
                    [1] => SG - NOUR RIBTS - CATHUPP
                    [2] => Nour Ribt Spaxacol Loaxal
                    [3] => 800
                    [4] => 
                    [5] => 07-72-7016
                    [6] => Ecoaxan
                    [7] => NOUR RIBTS 07-72-7016
                    [8] => 

                         )

            [ooscheck] => Array
                        (
                            [0] => 1
                            [1] => 1
                        )

                              )

    [myCheckboxes] => 1,1
    [panelnumberx] => 0
                                )
       )
[columndata] => Array (

    [0] => Array (

            [0] => 
            [1] => SG - NOUR RIBTS - CATHUPP
            [2] => Nour Ribt Spaxacol Blenk
            [3] => 800
            [4] => 
            [5] => 07-72-7016
            [6] => Ecoaxan
            [7] => NOUR RIBTS 07-72-7016
            [8] => 
            [9] => 1
                 )

    [1] => Array (

            [0] => 
            [1] => SG - NOUR RIBTS - CATHUPP
            [2] => Nour Ribt Spaxacol Loaxal
            [3] => 800
            [4] => 
            [5] => 07-72-7016
            [6] => Ecoaxan
            [7] => NOUR RIBTS 07-72-7016
            [8] => 
            [9] => 1
                 )

                      )
还尝试了
array\u combine
$c=array\u combine($params['confirmShipping']['columndata'],$checkbox);
,但得到了一个
警告:array\u combine():两个参数的元素数应该相等

我希望实现的是我的columndata数组输出如下所示

Array (
    [confirmshipment] => Array (

        [columndata] => Array (

            [0] => Array (

                    [0] => 
                    [1] => SG - NOUR RIBTS - CATHUPP
                    [2] => Nour Ribt Spaxacol Blenk
                    [3] => 800
                    [4] => 
                    [5] => 07-72-7016
                    [6] => Ecoaxan
                    [7] => NOUR RIBTS 07-72-7016
                    [8] => 
                         )

            [1] => Array (

                    [0] => 
                    [1] => SG - NOUR RIBTS - CATHUPP
                    [2] => Nour Ribt Spaxacol Loaxal
                    [3] => 800
                    [4] => 
                    [5] => 07-72-7016
                    [6] => Ecoaxan
                    [7] => NOUR RIBTS 07-72-7016
                    [8] => 

                         )

            [ooscheck] => Array
                        (
                            [0] => 1
                            [1] => 1
                        )

                              )

    [myCheckboxes] => 1,1
    [panelnumberx] => 0
                                )
       )
[columndata] => Array (

    [0] => Array (

            [0] => 
            [1] => SG - NOUR RIBTS - CATHUPP
            [2] => Nour Ribt Spaxacol Blenk
            [3] => 800
            [4] => 
            [5] => 07-72-7016
            [6] => Ecoaxan
            [7] => NOUR RIBTS 07-72-7016
            [8] => 
            [9] => 1
                 )

    [1] => Array (

            [0] => 
            [1] => SG - NOUR RIBTS - CATHUPP
            [2] => Nour Ribt Spaxacol Loaxal
            [3] => 800
            [4] => 
            [5] => 07-72-7016
            [6] => Ecoaxan
            [7] => NOUR RIBTS 07-72-7016
            [8] => 
            [9] => 1
                 )

                      )
注意新的数组元素(从复选框数组中推出),
[9]=>1

或者从技术上讲,由于
[8]=>
始终为空,因此也可以将其附加到该数字上


以这种方式遍历和修改数组的最佳选择是什么?

虽然我不完全理解您的代码,但我认为这应该可以:

// Loop the exploded checkboxes
foreach( $checkboxes as $k=>$v )
{
    // Since the index of the columndata matches the index of the $checkboxes
    // we can safely just add the checkbox value to that columndata position
    $params['confirmshipment']['columndata'][$k][] = $v;
}

虽然我不完全理解您的代码,但我认为这应该是可行的:

// Loop the exploded checkboxes
foreach( $checkboxes as $k=>$v )
{
    // Since the index of the columndata matches the index of the $checkboxes
    // we can safely just add the checkbox value to that columndata position
    $params['confirmshipment']['columndata'][$k][] = $v;
}

您实际上是在数组中设置
ooscheck
键,这与您试图实现的目标相反

您可以使用
array\u push(&$array,$value)

文件:

使用您自己的代码,这是一些未经测试的伪代码,应该是正确的或非常接近的

$c = 0;
foreach ($checkboxes as $checked) {
    foreach ($params as $key['columndata'] => &$value) {
        array_push($value['columndata'][$c], $checked);
        $c++;
    }
}

这将把
$checked
值推到
$value['columndata'][$c]
的末尾,而不是推到
$value['columndata']中的一个新
ooscheck
键中
array.

您实际上是在数组中设置
ooscheck
键,这与您试图实现的目标相反

您可以使用
array\u push(&$array,$value)

文件:

使用您自己的代码,这是一些未经测试的伪代码,应该是正确的或非常接近的

$c = 0;
foreach ($checkboxes as $checked) {
    foreach ($params as $key['columndata'] => &$value) {
        array_push($value['columndata'][$c], $checked);
        $c++;
    }
}
这将把
$checked
值推到
$value['columndata'][$c]
的末尾,而不是推到
$value['columndata']
数组中的新
ooscheck
键中