3

我有一个将纬度/经度存储在一起的数组。例如:

@values[0] = "-0.709999984318709,60.690000003554324"

我试图将它分成两个数组,@lat并且@long基于逗号。

我怎样才能做到这一点?

谢谢

4

2 回答 2

6

我假设您希望将每个纬度和经度值保持在一起,在这种情况下,将您的数组转换为二维数组是合适的:

my @latlong = map { [ split /,/, $_, 2 ] } @values 

我使用了此处的完整符号split来调用LIMIT2 个字段的条件。这些数据可能无关紧要,但如果条件发生变化则可能很重要。

map语句的代码首先将 的每个元素一@values分为二,将结果列表 2 放入一个匿名数组[ ... ]中,然后将其插入到新数组中。打印时生成的数组如下所示Data::Dumper

$VAR1 = [
          [
            '-0.709999984318709',
            '60.690000003554324'
          ]
        ];
于 2013-06-04T09:37:35.293 回答
4

首先,最好写 $values[0] 来引用数组元素。

假设逗号是一致的, split 命令将在这里为您提供帮助:

foreach (@values) {
  my @separated = split(',', $_);
  push @lat, $separated[0];
  push @long, $separated[1];
}

有很多方法可以做到这一点,但我已经以一种应该显示如何处理数组的方式做到了。

于 2013-06-04T09:06:41.610 回答