【发布时间】:2023-03-14 23:54:01
【问题描述】:
我正在尝试插入一个数组或(如果已经声明了一个)向其中添加元素。
$data 数组的 print_r 输出:
Array
(
[0] => Array
(
[0] => 7727368
[1] => Array
(
)
)
[1] => Array
(
[0] => 7727284
[1] => Array
(
[0] => Array
(
[0] => 7543419783
)
)
)
[2] => Array
(
[0] => 7787473
[1] => Array
(
[0] => Array
(
[0] => 7771723347
)
[1] => Array
(
[0] => 8458457
)
)
)
)
PHP 代码:
$idaukcji = $_POST['idaukcji'];
$modid = $_POST['modid'];
foreach($data as $item){
foreach($item[1] as $subitem){
if($subitem[0]==$idaukcji){
if(array_key_exists('1',$subitem)){
array_push($subitem[1],$modid);
}
else{
array_push($subitem, array($modid));
}
}
$tobase = base64_encode(serialize($item[1]));
$sql="UPDATE data SET allegroaucnum='$tobase' WHERE wfnum = '$item[0]'";
mysqli_query($conn,$sql) or die(mysqli_error($conn));
}
}
如果声明了最深嵌套数组的索引 [1],则脚本应检查是否存在现有数组,则应将 $modid 添加到该数组,如果没有,则使用 $modid 创建数组元素。
实际代码给出了我们在上面(在 print_r 中)可以看到的内容,但如果我添加
echo $subitem[1][0];
之后(在其他内部)
array_push($subitem, array($modid));
它确实返回了 $modid 值,但它在 print_r 中没有显示
提前感谢您的帮助。
【问题讨论】:
-
要修改内部数组,请将它们设置为引用:
foreach($data as &$item){ foreach($item[1] as &$subitem){ -
数组推送可以将值添加到现有数组中。如果要将值分配给特定的数组索引,则需要使用 array[index][whatever] = value 显式执行
-
@splash58 谢谢!这有帮助!
标签: php array-push