我正在尝试在 2D 数组中推送/取消移位 1D 数组,该数组是 3D 数组的子数组。您可以查看http://codepad.org/5s8Og64k中的示例代码 以使其更清楚,我也将其复制在这里:
use Data::Dumper;
# @arr_3d ;
$arr_3d[0][0][0] = 1;
$arr_3d[0][1][0] = 2;
$arr_3d[0][0][1] = 4;
$arr_3d[0][1][1] = 3;
# @arr_1d ;
$arr_1d[1] = "new1";
$arr_1d[0] = "new0";
print Dumper(\@arr_3d);
unshift @{$arr_3d[0]},\@arr_1d;
print Dumper(\@arr_3d);
换句话说,如果我们定义 3D 数组的维度 xyz 并考虑 x 常数,那么我们会得到一个“2D”数组。我想将一维数组推入原始 3D 数组的这个 2D“子数组”中。
示例代码实际上是这样做的,但是当我尝试将它应用到我的主脚本时,转储程序转储“ $VAR1->[0][0] ” 代替所有先前推入的数据,并且只转储数据从最后一个推入的一维数组。
知道是什么原因造成的,或者有什么更有效的方法来推动我描述的推动?
额外信息: 实际的数据结构是在循环中创建的,例如:
unshift @{$arr_3d[$index]},\@arr_1d;
print @arr_1d; # This prints successfully the 1D array
创建“@arr_1d”的位置只需分配单个元素:
$arr_1d[0]='a'; $arr_1d[1]='b'; # etc, etc..
谢谢你的时间,乔治斯