构造散列的方式总是可以变化的,它可以是数组散列的散列或其他。 对于散列的每个不同结构,需要有一个不同的实现,将其转换为二维数组。
是否有将哈希转换为数组的一般方法? 例如,我可以说,第一个键变为第0列,第二个键第1列等。
评论示例:
$distangle{some_distance}{some_angle}=();
现在我想将哈希的散列转换为普通的二维数组@distangle=(some_distance,some_angle)
。
这是一种方法,然后明天我有一些不同形式的哈希我也需要转换为二维数组。
答案 0 :(得分:0)
哈希中的“第一个”键是什么?钥匙没有订购。你想按字母顺序排序吗?
@arr = map { $hash{$key} } sort keys %hash;
修改强>:
OP想要一个2D数组,所以这里是:
@arr = ()
for $first (keys %hash) {
for $second (keys %{ $hash{$first} }) {
for $third (keys %{ $hash{$first}{$second} }) {
my $value = $hash{$first}{$second}{$third};
push @arr, ($first, $second, $third, $value);
这样的东西?
编辑2 :This solution看起来也不错。
答案 1 :(得分:0)
首先,哈希是无序的,所以当你说“第一把钥匙”时,就没有这样的东西了。
其次,如果你确实有一个数组散列哈希(如你的例子),那么在我看来,将它减少到一个二维数组的严格要求将导致数据丢失(假设你的意思该数组中的所有元素都不能是hashrefs或arrayrefs。