Thread dynamisch mehrdimensionales Array
(19 answers)
Opened by sebi85 at 2010-10-27 10:09
Soweit ich das sehe, lässt sich die Konstruktion wie folgt vereinfachen:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 my %DATA_HASH; for(my $i=0;$i<@FUNCTION_ARRAY;$i++) { if($FUNCTION_ARRAY[$i]->gi() eq 'TestFunction') { my $temp_func = $FUNCTION_ARRAY[$i]->att('name'); $i++ while($FUNCTION_ARRAY[$i]->gi() ne 'Parameter'); my $temp_param = $FUNCTION_ARRAY[$i]->att('name'); my $temp_pos=$i; $i++ while($FUNCTION_ARRAY[$i]->gi() ne 'ParameterValue'); $temp_pos=$i-$temp_pos; $DATA_HASH{$temp_func}->{$temp_param}->{$pos}=$FUNCTION_ARRAY[$i]->att('value')); } } Da kommt dann so was raus: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 %DATA_HASH=( A => { param1 => { 0 => "value2", 5 => "value3", 2 => "value4", }, }, B => { param1 => { 5 => "value1", }, param2 => { 1 => "value1", 0 => "value2", 7 => "value3", 5 => "value4", }, param3 => { 0 => "value1", 1 => "value2", }, }, ); Wenn es dir beim letzten Teil nur um eine eindeutige Zuordnung der werte geht kannst du auch so was machen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 my %DATA_HASH; for(my $i=0;$i<@FUNCTION_ARRAY;$i++) { if($FUNCTION_ARRAY[$i]->gi() eq 'TestFunction') { my $temp_func = $FUNCTION_ARRAY[$i]->att('name'); $i++ while($FUNCTION_ARRAY[$i]->gi() ne 'Parameter'); my $temp_param = $FUNCTION_ARRAY[$i]->att('name'); $i++ while($FUNCTION_ARRAY[$i]->gi() ne 'ParameterValue'); push(@{$DATA_HASH{$temp_func}->{$temp_param}},$FUNCTION_ARRAY[$i]->att('value')); } } Last edited: 2010-10-28 12:03:44 +0200 (CEST) |