Thread schlüssel im hash ermitteln (8 answers)
Opened by Froschpopo at 2005-04-17 19:52

sri
 2005-04-17 21:16
#53875 #53875
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Froschpopo,17.04.2005, 17:52]mal angenommen ich kenne nur den wert eines hash-eintrags und möchte gerne den schlüssel wissen. gibts da noch eine andere möglichkeit als das ganze in einer schleife zu durchlaufen? Gibts auch sowas dass man direkt auf ein Element zugreifen kann?

also sowas wie: keys($hash{wert})
ist doch sicher nen performancekiller wenn man die ganzen elemente einzeln abarbeiten muss z.b. mit each...[/quote]
Nein das geht nicht, liegt daran wie Hv's intern funktionieren.

Es ist naemlich ein array mit verketteten listen.

Quasi so wenn man sich es als perl struktur vorstellt (pseudocode):
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
$xpvhv = {
   array => [
       {
           next => {
               next => {
                   next => {
                       # usw
                   },
                   hek => 'key3',
                   val => 'value3',
               },
               hek => 'key2',
               val => 'value2',
           },
           hek => 'key',
           val => 'value',
       },  
       {
           next => {
               # usw
           },
           hek => 'key',
           val => 'value',
       },
     ],
     # magische felder fuer iterator, index, stash etc.
};


Die position im array ergibt sich aus einer pruefsumme der keys, an die Kette wird einfach angehaengt.
Das erklaert auch warum Perl hash's so schnell sind. ;)\n\n

<!--EDIT|sri|1113758309-->

View full thread schlüssel im hash ermitteln