Slettet bruger
29. december 2005 - 16:41
Der er
18 kommentarer og 1 løsning
Checke om variabel indeholde en værdi
Hej Hvis jeg har en variabel der ser således ud: $test = "5¤2¤11"; Hvordan kontrollerer jeg om den indeholder forskellige værdier. Jeg henter alle id'er fra en tabel (dvs. typisk fra 1 og opefter). Hvordan checker jeg om min variabel indeholder f.eks. værdien "1". Jeg har forsøgt, men da 11 indeholder 1, vil den finde den, selvom værdien ikke er i variablen.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
29. december 2005 - 16:50
#1
Er det ikke bare if ($test == 1) { echo "den indeholder tallet 1"; }else{ echo "Den indeholder ikke tallet 1"; }
Slettet bruger
29. december 2005 - 16:50
#2
Så vil den også melde at den indeholder tallet 1, selvom variablen indeholder tallet 11.
29. december 2005 - 16:53
#3
Slettet bruger
29. december 2005 - 17:00
#4
plazm...> Det fungerer, men desværre ikke til det jeg skal bruge det til. Problemet er en smule forenklet. Jeg har en løkke der henter noget ud af en database. Såfremt id'en fra den enkelte post er med i variablen der gøres ét, er den ikke med i variablen skal der gøres noget andet. I pricippet kan variablen indeholder flere hundrede værdier, og skal den rendes igennem for hver post i databasen vil det blive omstændigt.
29. december 2005 - 17:02
#5
Hvorfor er $test ikke et array?
Slettet bruger
29. december 2005 - 17:05
#6
erikjacobsen....> Jeg har en side med en form. I denne form vælges en masse "grupper" i en select-box. Værdierne samles i en variabel og sendes til en validerings-side, sammen med en masse andet data fra formen. Er der fejl i indtastningerne sendes værdierne tilbage til form-siden, sammen med fejl-besked. Når siden skal vises igen, skal jeg have værdierne fra variablen (hvert tal repræsenterer et id i en database) "oversat" til min select-form igen.
29. december 2005 - 17:05
#7
erik, tænkte jeg faktisk også, men nu har jeg opdateret min side, kik igen
http://plazm.dk/exp
Slettet bruger
29. december 2005 - 17:07
#8
plazm...> Virker næsten efter hensigten, dog vil den ikke virke hvis 11 står først i variablen...
29. december 2005 - 17:08
#9
sådan, en mindre fejl, hvis der var flere af samme.
Slettet bruger
29. december 2005 - 17:09
#10
Det ser rigtig ud. Hvordan kan jeg flette det ind i min sql-løkke: while ($row_groups = mysql_fetch_assoc($query_groups)) { $group_name = $row_groups['name']; $group_id = $row_groups['id']; if $group_id findes i variabel { $user_group_not_selected .= ("<option value=\"$group_id\">$group_name</option>"); } else { $user_group_selected .= ("<option value=\"$group_id\">$group_name</option>"); } }
29. december 2005 - 17:11
#11
function iarray($array,$sep,$needle) { $array = explode($sep, $array); $needles = array_keys($array, $needle); return (count($needles) > 0)?True:False; } while ($row_groups = mysql_fetch_assoc($query_groups)) { $group_name = $row_groups['name']; $group_id = $row_groups['id']; if (iarray($test,'¤',$group_id)) { $user_group_not_selected .= ("<option value=\"$group_id\">$group_name</option>"); } else { $user_group_selected .= ("<option value=\"$group_id\">$group_name</option>"); } }
29. december 2005 - 17:14
#12
Jo, men så lav den til et array, een gang for alle på siden, og brug
http://php.net/in_array
29. december 2005 - 17:15
#13
heh, det er rigtigt, sad bare lige med array_keys i hånden, til et foregående spørgsmål, og hvis du "kun" har en hammer, så ligner alle problemer jo et søm :)
Slettet bruger
29. december 2005 - 17:16
#14
erikjacobsen....> Det må jeg lige overveje, der er pænt meget der skal rettes. plazm...> Tak for hjælpen. Point på vej.
29. december 2005 - 17:17
#15
function iarray($array,$sep,$needle) { $array = explode($sep, $array); return in_array($needle, $array); } while ($row_groups = mysql_fetch_assoc($query_groups)) { $group_name = $row_groups['name']; $group_id = $row_groups['id']; if (iarray($test,'¤',$group_id)) { $user_group_not_selected .= ("<option value=\"$group_id\">$group_name</option>"); } else { $user_group_selected .= ("<option value=\"$group_id\">$group_name</option>"); } }
Slettet bruger
29. december 2005 - 17:25
#16
I mit tilfælde er der ikke noget sparet ved at lave det om til er array, idet jeg bare skal gennemløbe array'et for hver post i databasen. Tror det vil være smartere at lave noget reg.exp. Så skal der ikke explodes for hver eneste post i databasen.
29. december 2005 - 18:27
#17
$test = explode('¤', $test); while ($row_groups = mysql_fetch_assoc($query_groups)) { $group_name = $row_groups['name']; $group_id = $row_groups['id']; if (in_array($group_id, $test)) { $user_group_not_selected .= ("<option value=\"$group_id\">$group_name</option>"); } else { $user_group_selected .= ("<option value=\"$group_id\">$group_name</option>"); } }
29. december 2005 - 18:34
#18
Hvis der ikke er synderligt mange værdier i array-et (10-20 stykker), er plazm 18:27:04 den bedste løsning jeg kan foreslå.
Slettet bruger
30. december 2005 - 01:47
#19
Kan godt se at den sidste udgave er stort set det samme som den jeg har fået hjælp til i et andet spørgsmål: $test = "2¤3¤4¤5¤6¤7¤8¤9¤10¤11¤110¤1110¤101"; $num = 1; $reg = "/^" . $num . "¤|¤" . $num . "¤|¤" . $num . "$/"; while ($row_groups = mysql_fetch_assoc($query_groups)) { $group_name = $row_groups['name']; $group_id = $row_groups['id']; if(preg_match($reg,$test)) { $user_group_not_selected .= ("<option value=\"$group_id\">$group_name</option>"); } else { $user_group_selected .= ("<option value=\"$group_id\">$group_name</option>"); } }
Vi tilbyder markedets bedste kurser inden for webudvikling