08. december 2004 - 11:31Der er
2 kommentarer og 1 løsning
Sletning af elementer i array
Hejsa
Jeg har problemer med at fjerne nogle elementer i et array.
Jeg har nogle varelinier i et array, hvor nøglen er vareid og værdien er antal. Nogle af varerne er tilbehør til andre varer, så der er vareid en "sammensat nøgle". Array'et kan se således ud: [111] = 2 [111+57] = 1 [111+58} = 2 [222] = 1 [222+60] = 2
Dvs. at [111+57] og [111+58] hører til [111] osv. Så jeg har lavet en sletVarelinie som tager et vareid, der sletter varelinien med vareid og alle tilhørende varer, men skidtet virker ikke :o(
Det ser således ud:
01 // Funktion fjerner varelinie med vareid $delVareid og alle tilhørende varer 02 function removeVarelinie($delVareid) { 03 unset($this->varelinier[$delVareid]); 04 $delVareid .= "+"; 05 reset($this->varelinier); 06 while(list($vareid,$varelinie) = each($this->varelinier)) { 07 echo("Jeg har fundet vare med vareid: $vareid <br>"); 08 if(strpos($vareid,$delVareid) !== false) { 09 echo("Jeg skal slette Vareid: $vareid <br>"); 10 unset($this->varelinier[$vareid]); 11 } 12 } 13 } // function removeVarelinie
$this er en kurv, der bl.a. har array'et varelinier. Som I kan se, har jeg sat lidt debugging ind, og jeg kan se, at jeg finder de rigtige varer, men unset-kommandoen i linie 10 fungerer ikke efter hensigten.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Slettet bruger
08. december 2004 - 11:39#1
$array[222+60] er det samme som $array[282] !!
Så hvis du skal lede efter tilbehør til vare 111 skal du se efter om 111+ er i keyen. Hvis du skal lede efter selve vare 111 skal du finde netop keyen 111. Du kontrollerer om et substring er i en streg med strstr();
Det var vidst hvad man kalder et let skub fremad. (Hjælp til selvhjælp ;o) )
Hvis du skal have lavet et kode eksempel så sig til, men prøv først om du kan selv :)
Jeg lister det jeg har i kurven ud, og der står [111+57] som [111+57] og ikke som [168], men det kan da være at jeg skal prøve et andet adskillelsestegn end + ?
Hvis du læste koden igennem inden du begyndte at skubbe mig fremad, så vil du se at jeg har gjort nøjagtig som du foreslår...
I linie 3 sletter jeg varelinier[111] I linie 4 sætter jeg et plus efter, så delVareid = 111+ I linie 8 tjekker jeg om 111+ er i vareid'et (Jeg vælger at gøre det med strpos istedet, men det giver vist samme resultat)
Som jeg skriver i kommentaren til koden, så finder jeg de rigtige varer [111+57] og [111+58], men unset sletter dem ikke...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.