19. september 2005 - 09:17
Der er
6 kommentarer og 1 løsning
Array og hash (2)
$hash{'a'}='a1'; $hash{'b'}='b1'; $array[0] = \%hash; $hash{'a'}='a2'; $hash{'b'}='b2'; $array[1] = \%hash; Den virker ikke. Findes der en løsning, hvor man siger at %hash skal referencere til en anden (ny) adresse? med venlig hilsen KernelX
Annonceindlæg fra Deloitte
19. september 2005 - 09:22
#1
I din kode er %hash (doh) en hash og $array[0] og $array[1] peger begge to på den samme %hash. Der er altså ikek %hash selv som peger på en adresse. Hvad mener du præcist med at "%hash skal referencere til en anden (ny) adresse?"? Hvad er det for en effekt du gerne vil opnå?
19. september 2005 - 09:39
#2
mit problem er, at %hash hele tiden har den samme adresse. Der bliver lavet en DB-connection - og hver gang den for fat i en nye værdier i en while-sløjfe, skal de in i et array, sådan at arrayet refererer til hashen med værdierne. --- while (ny row) { $hash{'col1'} = $col1; $hash{'col2'} = $col2; $array[$arrayIndex] = \%hash; $arrayIndex++; } --- som man kan se, peger referencen hele tiden på det samme sted. jeg vil på en eller anden måde sørge for, at # %hash har adresse 1 $hash{'a'}='a1'; $hash{'b'}='b1'; og # %hash har adresse 2 $hash{'a'}='a2'; $hash{'b'}='b2'; --- for at komme tilbage til eksemplet: ---- $hash{'a'}='a1'; $hash{'b'}='b1'; $array[0] = \%hash; # delete %hash # ny %hash med ny adresse $hash{'a'}='a2'; $hash{'b'}='b2'; $array[1] = \%hash; --- sorry, jeg er måske ikke så god til at forklare, hvad jeg vil ud på. Men jeg giver mit bedste :-)
19. september 2005 - 09:47
#3
Så vidt jeg kan forstå så ønsker du at gemme referencen til værdierne fra databasen i dit array efterhånden som du henter dem? Det burde denne kode kunne gøre: while ($hash = $result->fetchrow_hashref) { $array[$arrayIndex] = $hash; $arrayIndex++; } - (så har du referencerne i dit array), eller denne: while ($hash = $result->fetchrow_hashref) { $array[$arrayIndex] = %$hash; $arrayIndex++; } - (så har du selve hashen i dit array.)