翻转数组结构
本帖最后由 qingyun039 于 2018-04-21 11:29 编辑请问有什么方法可以便捷的翻转数组结构,如 ] ]变为 ] ]?
用reverse函数试试
唐胜 发表于 2018-04-21 09:15
用reverse函数试试
reverse 只能翻转数组成员的顺序呀(⊙o⊙)?这里是不是需要递归处理,因为一个数组里有标量还有数组,它们要区别对待,如果数组的话又是最初的问题,先把它翻转。 是: ] ] 变为 [[],2],1 ] ?
104359176 发表于 2018-04-22 13:37 static/image/common/back.gif
是: ] ] 变为 [[],2],1 ] ?
不是,应该是]],同一维度的成员位置可以任意,比如也可以]]。但是同一维度如果包含两个数组引用,如,]],则不可转化为]],因为它再转化为]]与最原始不同,所以一个维度包含两个数组引用视为不可翻转。
维度都变了?
数组中只是数字么? 先大概实现,效率低下,没有做不可翻转的辨别。
# http://bbs.chinaunix.net/thread-4295208-1-1.html
use Data::Dumper;
$Data::Dumper::Indent = 0;
my $oldarr = ] ] ];
my $newarr = [];
convert( $oldarr, $newarr, 0 );
print Dumper $newarr;
sub convert
{
my ( $oldarr, $newarr, $lv ) = @_;
grep {push @$newarr, $_ if ( ref $_ ne "ARRAY" )} @$oldarr;
for ( @$oldarr )
{
if ( ref $_ eq "ARRAY" )
{
@$newarr = ( [@$newarr] ) ;
convert( $_, $newarr, $lv+1 );
}
}
}
输出
$VAR1 = [[[,2],3,4],5];
页:
[1]