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
键中