hockey500 Skrevet 30. juli 2005 Del Skrevet 30. juli 2005 (endret) Hei, jeg prøver å legge inn en variabel som nøkkel i et array, men da oppstår det en feil: $rad = mysql_fetch_array($resultat); $nr1 = (int) $rad['nr1']; $nr2 = (int) $rad['nr2']; $nr3 = (int) $rad['nr3']; $nr4 = (int) $rad['nr4']; $nr5 = (int) $rad['nr5']; $sum = $nr1 + $nr2 + $nr3 + $nr4 + $nr5; $nr1p = $nr1 * 100 / $sum; $nr2p = $nr2 * 100 / $sum; $nr3p = $nr3 * 100 / $sum; $nr4p = $nr4 * 100 / $sum; $nr5p = $nr5 * 100 / $sum; $matrise = array( $nr1p => 'Alternativ nr. 1 i poll', $nr2p => 'Alternativ nr. 2 i poll', $nr3p => 'Alternativ nr. 3 i poll', $nr4p => 'Alternativ nr. 4 i poll', $nr5p => 'Alternativ nr. 5 i poll' ); ksort($matrise); $matrise = array_reverse($matrise); $nr = 1; echo "<table id='tabell' cellspacing='0'>\n"; echo "<tr>\n<th colspan='3'>Hvem skal jeg tegne neste gang?</th>\n</tr>\n"; foreach($matrise as $key => $value) { echo "<tr>\n<td id='tall'>$nr</td>\n<td id='celle'>$value</td>\n<td id='celle2'>$key%</td>\n</tr>\n\n"; $nr++; } $person = ($sum == 1) ? "stemme" : "stemmer"; echo "<tr><td colspan='3' id='colspan'>$sum $person totalt</td></tr>"; echo "</table>\n"; dette er altså da koden for å hente ut 5 verdier som ligger i samme rad i en tabell. Alt funker fint hvis jeg bytter ut f. eks. $nr1p med tallet 1 og så videre. Hvordan kan jeg få den til å forstå at det er variabelens verdi jeg vil ha som nøkkel? Endret 30. juli 2005 av hockey500 Lenke til kommentar
El Nino Skrevet 30. juli 2005 Del Skrevet 30. juli 2005 $matrise = array(); $matrise[$nr1p] = "Alternativ nr. 1 i poll"; $matrise[$nr2p] = "Alternativ nr. 2 i poll"; $matrise[$nr3p] = "Alternativ nr. 3 i poll"; $matrise[$nr4p] = "Alternativ nr. 4 i poll"; $matrise[$nr5p] = "Alternativ nr. 5 i poll"; Hvis jeg forstod deg riktig.. Lenke til kommentar
hockey500 Skrevet 30. juli 2005 Forfatter Del Skrevet 30. juli 2005 nei, ikke helt. jeg oppretter en assosiativ matrise. en assosiativ matrise kan se f. eks. slik ut: $array = array( "nøkkel" => "verdi", "nøkkel2" => "verdi2, "nøkkel3" => "verdi3"); foreach($array as $nokkel => $verdi) echo $nokkel. " -> " .$verdi ."<br>"; resultatet av den koden skulle da bli: nøkkel -> verdi nøkkel2 -> verdi2 nøkkel3 -> verdi3 jeg vil at det skal skje. men jeg vil ha en variabel som nøkkel. Det må da være mulig å opprette et array med variabler som nøkler. Jeg vil altså ikke hardkode nøklene, det vet jeg funker. men jeg vil ha en nøkkel til å bli f.eks. "blablabla" hvis variabelen $nokkel = "blablabla". så jeg vil at disse kodene skal gi samme resultat: $array = array( "bla" => "verdi", "blabla" => "verdi2, "blablabla" => "verdi3"); foreach($array as $nokkel => $verdi) echo $nokkel. " -> " .$verdi ."<br>"; $nøkkel = "bla"; $nøkkel2 = "blabla"; $nøkkel3 = "blablabla"; $array = array( "$nøkkel" => "verdi", "$nøkkel2" => "verdi2, "$nøkkel3" => "verdi3"); foreach($array as $nokkel => $verdi) echo $nokkel. " -> " .$verdi ."<br>"; det må da ha vært enkelt å forstå Lenke til kommentar
El Nino Skrevet 30. juli 2005 Del Skrevet 30. juli 2005 Jepp, da forstod jeg deg riktig.. ta en print_r($matrise) så ser du det. Lenke til kommentar
hockey500 Skrevet 30. juli 2005 Forfatter Del Skrevet 30. juli 2005 da fikk jeg kun opp første og siste element i arrayet Lenke til kommentar
El Nino Skrevet 30. juli 2005 Del Skrevet 30. juli 2005 Saken er at det er helt feil bygd opp. Et eksempel: $nr1p = 50*100/162; echo $nr1p; Dette gir summen 37.878787878788, så hvis du gjør følgende: $matrise = array($nr1p => 'Alternativ nr. 1 i poll'); print_r($matrise); Så vil du se at den kutter ut desimalene og nøkkel blir da 37. Array ( [37] => Alternativ nr. 1 i poll ). Du må gjøre følgende for å definere at det er en string du setter som nøkkel: $matrise = array(sprintf("%s",$nr1p) => 'Alternativ nr. 1 i poll'); print_r($matrise); Men er er det et problem som du ikke har tenkt på. Hva vis $nrp1 og $nrp4 får samme nøkkel, da vil $nrp4 overskrive $nrp1. Lenke til kommentar
hockey500 Skrevet 30. juli 2005 Forfatter Del Skrevet 30. juli 2005 (endret) så det var derfor bare noen av dem viste seg . straks jeg endret nøklene til 1, 2, 3, 4 og 5 gikk det fint. jeg fiksa problemet med at det ble mange desimaler enkelt og greit ved å fjerne " rundt variablene i nøklene. problemet med at de overskriver hverandre var også greit å fikse. bare legge til en bokstav ved slutten av nøkkelen: $matrise = array( $nr1p."a" => "1", $nr2p."b" => "2", $nr3p."c" => "3", $nr4p."d" => "4", $nr5p."e" => "5"); og så konvertere til int igjen inni foreach løkka. men selv denne løsningen hadde et problem. jeg vil ikke kunne sortere den riktig lenger. Endret 30. juli 2005 av hockey500 Lenke til kommentar
El Nino Skrevet 30. juli 2005 Del Skrevet 30. juli 2005 Jeg forstår ikke hvorfor du skal ha verdien som nøkkel. Det hadde vært mye bedre om du snudde på det, slik at du fikk sortert det riktig og koden blir enklere $matrise = array( "1" => $nr1p, "2" => $nr2p, "3" => $nr3p, "4" => $nr4p, "5" => $nr5p); rsort($matrise); Lenke til kommentar
hockey500 Skrevet 30. juli 2005 Forfatter Del Skrevet 30. juli 2005 ingen dum idè, det funka, men jeg bytta ut rsort() med arsort() Lenke til kommentar
El Nino Skrevet 30. juli 2005 Del Skrevet 30. juli 2005 Whatever makes your day.. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå