Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7689[/thread]

Index eines bestimmten Array-Elements: index(@array, $array_element)

Leser: 2


<< >> 8 Einträge, 1 Seite
pearl-man
 2006-02-09 14:47
#62783 #62783
User since
2005-07-25
65 Artikel
BenutzerIn
[default_avatar]
Wie kann ich den Index also die logischen Zähler eines Elements in einem Array (z.B. @array) herrausfinden?

geht das mit Index()?

hab also z.B. @array = ("eins", "zwie", "drei");

möchte den Index von Zwie wissen (also 1 als Antwort erhalten, da ja von 0 an hochgezählt wird )
vayu
 2006-02-09 15:10
#62784 #62784
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;

my @arr = qw(eens zwo dra);
my $i= 0;

foreach(@arr) {
/zwo/ and do print $i."\n";
$i++;
}
Crian
 2006-02-09 15:10
#62785 #62785
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Du kannst in einer Schleife suchen, aber wofür brauchst du das? Ich vermute mal, dass du das gar nicht wissen musst ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2006-02-09 15:12
#62786 #62786
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Wenn du die Indices mehrfach brauchst:

Code: (dl )
1
2
3
4
5
6
my @array = (qw/eins zwei drei/);
my %index;
my $i = 0;
$index{$_} = $i++ for @array;

print "Index von zwei: ", $index{'zwei'}, "\n";
\n\n

<!--EDIT|Crian|1139490810-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Taulmarill
 2006-02-09 15:32
#62787 #62787
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
man sollte auch bedenken, dass das element mehrfach oder gar nicht vorkommen kann. als fan von map und grep würde ich folgendermassen lösen:
Code: (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
25
26
27
28
29
30
31
32
use strict;
use warnings;

my @array = qw/eins zwei drei vier fuenf zwei/;
my $search = "zwei";

my @index = grep { $array[$_] eq $search ? 1 : 0 } 0 .. $#array;

my %index;
push @{ $index{$array[$_]} }, $_ for 0 .. $#array;

print "loesung mit array:\n";
print "==================\n";
if ( @index ) {
print "der string $search befindet sich and den stellen: ";
print join ", ", @index;
print "\n";
}
else {
print "$search wurde nicht gefunden.\n";
}

print "loesung mit hash:\n";
print "=================\n";
if ( exists $index{$search} ) {
print "der string $search befindet sich and den stellen: ";
print join ", ", @{ $index{$search} };
print "\n";
}
else {
print "$search wurde nicht gefunden.\n";
}
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Crian
 2006-02-09 15:38
#62788 #62788
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Als ebenfalls Fan von map und grep dachte ich, er braucht das vielleicht gar nicht... es wäre gut zu wissen, was er eigentlich erreichen möchte.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2006-02-10 00:14
#62789 #62789
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Taulmarill: Hier bist Du etwas umständlich:
Code: (dl )
my @index  = grep { $array[$_] eq $search ? 1 : 0 } 0 .. $#array;


grep liefert ja eh nur Elemente, für die der Ausdruck wahr ist. Also würde hier ein
Code: (dl )
my @index  = grep { $array[$_] eq $search} 0 .. $#array;
reichen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Taulmarill
 2006-02-10 11:44
#62790 #62790
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
ähm, ja. aber solche aussetzer hat man halt manchmal... :)
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
<< >> 8 Einträge, 1 Seite



View all threads created 2006-02-09 14:47.