01. september 2008 - 22:12Der er
13 kommentarer og 1 løsning
problemer med settype() og at analysere en string
Jeg trækker nogle data ud fra en database og skal så finde ud af hvilken type variabel jeg så skal arbejde med. problemet er bare at alt åbenbart håndteres som en string da min hent funktion smider alt ind i et array som f.eks. $resultat[vaerdi]
Jeg har prøvet og sidde og gøgle lidt med en funktion til at finde ud af hvilken type data jeg sidder med.
Der er dog flere ting her jeg endnu mangler og har problemer med
boolean kan den sagtens finde ud af.
Hvis variablen indeholder tal og bogstaver, så klipper den alt væk efter den første gruppe tal og siger at det er et integer selvom det jo burde returneres som en string.
Hvordan finder jeg ud af om jeg har med objects at gøre
hvordan finder jeg ud af om jeg har et decimaltal
Og så når jeg echoer variablen til sidst eller når jeg skal bruge den, så med mindre den er null så skriver den kun 1.
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
Hvis du laver var_dump() på $resultat[Vaerdi] Kan den så fortælle hvad du har med at gøre ? I stedet for preg_match(), hvorfor så ikke bruge is_numeric() eller is_int() ?
giver mening. Det er ikke et tal-felt bare fordi det indeholder et enkelt ciffer. Det har du jo så opdaget. Men selv om du finder et felt, der kun indeholder cifre, er det jo ikke et tegn på at det er et talfelt, og heller ikke nogen indikation af at det skal behandles som tal.
Og den her:
$type = boolean;
mener du vel ikke - skulle det ikke være
$type = "boolean";
?
Men der er en løsning, der dog er langt væk fra den du har her. Du skal spørge databasen hvilken type hvert felt har. Det kan den svare på. Der er dog stor forskel på hvordan man gør afhængig af hvilken database du anvender.
Hvorfor er det lige at du med kode vil finde du af hvilken type din variabel er. Har du ikke styr på hvilke typer du henter og bruger i din database ??
PHP håndtere, modsat andre programmerings sprog, variabler løst. Dvs at php ikke ligger sig fast på en type for de enkelte variabler. Du skal derfor selv holde styr på hvilken type din variabel indeholder på et givet tidspunkt. En variabel i php kan sagtens indeholde en streng på et tidspunkt og det næste tidspunkt være tildelt et array. PHP vil ikke melde fejl hvis du skriver et array i en variabel som før indeholdte en streng, men vil der i mod melde fejl hvis du prøver at læse arrayet som en streng. Derfor er det vigtigt at du selv holder styr på hvad dine variabler indeholder og ikke lader koden gøre det.
Så er det da meget nemmere at bede mysql, eller hvem det nu er, om at give tabelstrukturen, ellers kan du da ikke lige vide om det er int(10) eller int(5) som er blevet brugt.
dkfire > lige præcis denne tabel indeholder forskellige former for data, så derfor kunne jeg godt tænke mig at vide hvilken form for data jeg har med at gøre.
erikjacobsen > Fik også selv opdaget de manglende "" og den "or false" fejl.
jakobdo > problemet med gettype som jeg har opdaget er at mine variabler altid returnerer "string" som svar.
Generelt er grunden til dette at jeg har oplevet at hvis jeg ikke skriver f.eks. $resultat == "true" i stedet for $ resultat == true, så reagerer scripts tit uventet.
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.