User since
2006-04-13
90
Artikel
BenutzerIn
Hallo!
Gibt es ein Möglichkeit in ein Array auf Index 3 was rein zu schreiben, und die restlichen Werte in index 3,4,5,6,7 um eins verschieben.:
beispiels:
0|1|2|3|4|5|6|7|8
'a'|'s'|'d'|'f'|'g'|'h'|'j'|'k'
in index 3 den wert 'X' einfügen und restlichen ein verschieben so:
0|1|2|3|4|5|6|7|8|9|
'a'|'s'|'d'|'X'|'f'|'g'|'h'|'j'|'k'
vielen dank
User since
2007-06-09
575
Artikel
HausmeisterIn
splice vielleicht?
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Hi!
du könntest den rest des arrays (@main) also ab index X in einen temporären array (@temp) kopieren, den rest des arrays @main löschen, deinen neuen wert @main hinzufügen (push), und dann @temp wieder zu @main hinzufügen!
diesen vorgang schreibst du schön in ne sub der du @main und $newvalue (X) übergibst!
nur so ne idee Oo
User since
2003-08-04
14371
Artikel
ModeratorIn
Das ist von Performance und Speicherverbrauch her eher schlecht und dass es besser lesbar ist wage ich auch zu bezweifeln. Der Tipp von #Kein Kommentar war da schon richtig...
1
2
3
4
5
6
7
8
9
10
11
12
13
use strict;
use warnings;
use Data::Dumper;
my @array = ('a','s','d','f','g','h','j','k');
my $i = 3;
my $value = 'X';
print Dumper(\@array), "\n";
splice @array, $i, 0, $value;
print Dumper(\@array), "\n";
Ausgabe:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
C:\splice.pl
$VAR1 = [
'a',
's',
'd',
'f',
'g',
'h',
'j',
'k'
];
$VAR1 = [
'a',
's',
'd',
'X',
'f',
'g',
'h',
'j',
'k'
];
Wie man sieht kann man mit einer einzigen Zeile (und gut lesbar) das Gewünschte erreichen.
User since
2006-04-13
90
Artikel
BenutzerIn
Vielen Dank !
Die Variante mit der splice funktion ist wohl die bessere Lösung !