I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
<?php // Hent serialized data fra mysql til $serialized her $data = unserialize($serialized); ?>
Synes godt om
Slettet bruger
26. oktober 2009 - 13:31#3
Undskyld den dårlige forklaring :( - i har ret begge to, men
Det handler ikke om at gøre det let eller "rigtigt", men hurtigt! - og jeg driver ikke bank - det var bare et eksempel : )
Det bedste jeg kan komme op med selv er:
if (strpos( $data, $element."|#|") === FALSE) if (strpos( $data, "|#|".$element) === FALSE) $s = str_replace( $element , "" , $data ); // solo else $s = str_replace( "|#|".$element , "" , $data ); // sidste else $s = str_replace( $element."|#|" , "" , $data ); // første eller midt i
Og nu hvor jeg har fået tænkt lidt mere over det.. - i langt de fleste tilfælde vil det klares med 1 strpos og 1 str_replace Og i de tilfælde hvor der skal mere til, vil $data være ganske lille, så pyt.
Det kan sgu nok ikke gøres hurtigere... eller hvad ?
Synes godt om
Slettet bruger
26. oktober 2009 - 13:45#4
Jo, en lillebitte smule: Sidste element vil oftere skulle slettes end første. - og så lidt mere debug-venligt formateret:
if (strpos( $data, "|#|".$element) !== FALSE) $s = str_replace("|#|".$element , "" , $data ); // sidste eller midt i else if (strpos( $data, $element."|#|") !== FALSE) $s = str_replace($element."|#|" , "" , $data ); // første else $s = str_replace( $fra , "" , $data ); // solo
Well, så lad mig lige sige at str_replace ikke er specielt hurtig. Brug i stedet preg_replace med et regulært udtryk, det vil betale sig mht. performance i forhold til str_replace, især i længden.
Dog er arne_v's forslag stadig den pæneste, og sikkert også den hurtigste løsning. Du skal selvfølgelig huske at have de rigtige INDEXes på din tabel :-)
Synes godt om
Slettet bruger
26. oktober 2009 - 19:09#6
Tillad mig at tvivle.. - Den skal jo udføre det samme "arbejde" PLUS starte reg.exp op OG evaluere mit "expression"
Desuden aner jeg ikke hvad strengene faktisk indeholder - brugerindtastet - kunne godt risikere at "betyde noget" på reg.exp'sk...
Men du har ret i at str_replace er langsom. Det var derfor jeg stillede spørgsmålet... - Min PHP-erfaring skal måles i uger : )
Men str_ireplace og stripos vil nok være hurtigere - de slipper jo for at sammenligne både store og små bogstaver - ja, sådan må det være : )
NB: Grunden til at jeg ikke vil bruge en dedikeret table/index, er at disse data ALTID bruges samlet - som varerne i en indkøbskurv eller kampene på en tipskuppon...
Jamen selv om de bruges samme hele tiden, så betyder din tabelopbygning alt. Har du ikke en fornuftig tabelstruktur så kommer du ud i flere problemer senere. Og alt hvad du laver nu er kun lappeløsninger på noget der ikke er lavet ordenligt første gang. Det kan godt være det tager lidt tid for dig nu at ændre din struktur, men jeg er sikker på at du vinder meget i det lange løb.
YES - lige hvad jeg havde brug for arne_v - I won't (yet)
dkfire - du har selvfølgelig ret - men det ER efter "moden" overvejelse, at jeg har samlet disse data.
Synes godt om
Slettet bruger
29. oktober 2009 - 00:08#11
Jeg høster points'ne selv for:
if (stripos( $data, "|#|".$element) !== FALSE) $s = str_ireplace("|#|".$element , "" , $data ); // sidste eller midt i else if (stripos( $data, $element."|#|") !== FALSE) $s = str_ireplace($element."|#|" , "" , $data ); // første else $s = str_ireplace( $fra , "" , $data ); // solo
Håber ikke det støder nogen...
Synes godt om
Ny brugerNybegynder
Din løsning...
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.