/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
if en hel masse
Fra : Lasse Hedegaard


Dato : 14-09-03 23:46

Hvis jeg vil tjekke om en streng enten er abc, abd, abe (osv) hvordan
gør jeg det så smartest, når der er tale om MANGE "tjeks".

Umiddelbart kan jeg jo lave en if, elseif - og derudaf - men er der
ikke en smartere måde?

Jeg har fx. 5 kategorier, og jeg skal definere en variabel ud fra
hvilken kategori en anden variabel tilhører.

Altså hvis $foo er abc, abc, abe osv. - så skal $bar sættes til
kategori 1, hvis $foo er abf, abg osv. - så skal $bar sættes til
kategori 2 osv.

Skal jeg lave noget array-sjask? Hvordan?

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/
- også Siemens M55, S55, C55 samt SonyEricsson T610

 
 
Anders Thorsen Holm (15-09-2003)
Kommentar
Fra : Anders Thorsen Holm


Dato : 15-09-03 00:04

Subject: Re: if en hel masse
From: Anders Thorsen Holm <zoolook@daimi.au.dkx>
Newsgroups: dk.edb.internet.webdesign.serverside.php

Lasse Hedegaard wrote:

> Hvis jeg vil tjekke om en streng enten er abc, abd, abe (osv)
> hvordan gør jeg det så smartest, når der er tale om MANGE "tjeks".

Det lyder som om du skal have fat i regulære udtryk.

   <http://dk.php.net/manual/en/function.preg-match.php>
   <http://dk.php.net/manual/en/pcre.pattern.syntax.php>

> Altså hvis $foo er abc, abc, abe osv. - så skal $bar sættes til
> kategori 1, hvis $foo er abf, abg osv. - så skal $bar sættes til
> kategori 2 osv.

Måske noget i den her stil:

/* matcher "abc", "abd", "abe" */
if (preg_match("/^(ab)[c-e]$/i",$foo)) {
   $bar = "kategori 1";
}
/* matcher "abf", "abg", "abh" */
else if (preg_match("/^(ab)[f-h]$/i",$foo)) {
   $bar = "kategori 2";
}
/* matcher "abi", "abj", "abk" */
else if (preg_match("/^(ab)[i-k]$/i",$foo])) {
   $bar = "kategori 3";
}

Den kan sikkert gøres mere effektivt, i så fald skal du nok høre fra
andre i gruppen.

--
Anders Thorsen Holm | http://www.daimi.au.dk/~zoolook/

Overvejer du at købe en DVD-afspiller? Så hold dig fra Fona!
Læs hvorfor: http://www.daimi.au.dk/~zoolook/fona/


Lasse Hedegaard (15-09-2003)
Kommentar
Fra : Lasse Hedegaard


Dato : 15-09-03 00:10

Anders Thorsen Holm skrev:

>/* matcher "abc", "abd", "abe" */
>if (preg_match("/^(ab)[c-e]$/i",$foo)) {
>    $bar = "kategori 1";
>}
>/* matcher "abf", "abg", "abh" */
>else if (preg_match("/^(ab)[f-h]$/i",$foo)) {
>    $bar = "kategori 2";
>}
>/* matcher "abi", "abj", "abk" */
>else if (preg_match("/^(ab)[i-k]$/i",$foo])) {
>    $bar = "kategori 3";

Nu var abc, abd osv. blot eksempler.
I kategorierne kunne disse være:
hest, abe, ko (= dyr)
rød, blå, gul (= farver)

Jeg mener jeg har set noget array-sjask til sådan noget - men hvordan?

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/
- også Siemens M55, S55, C55 samt SonyEricsson T610

Peter Brodersen (15-09-2003)
Kommentar
Fra : Peter Brodersen


Dato : 15-09-03 00:17

On Mon, 15 Sep 2003 01:09:35 +0200, Lasse Hedegaard <laxxe@nospam.dk>
wrote:

>Jeg mener jeg har set noget array-sjask til sådan noget - men hvordan?

in_array(), måske?

<?php
$input = "gul";

$dyr = array("hest","abe","ko");
$farver = array("rød", "blå", "gul");

if (in_array($input, $farver)) {
   $bar = "kategori 1";
}
?>


Alternativt kan du bruge switch, fx:

<?php
switch($input) {
   case "rød":
   case "gul":
   case "blå":
      $bar = "kategori 1";
      break;
   case "hest":
   case "abe":
   case "ko":
      $bar = "kategori 2";
      break;
}
?>

--
- Peter Brodersen

Ugens sprogtip: PHP (og ikke PhP)

Anders Thorsen Holm (15-09-2003)
Kommentar
Fra : Anders Thorsen Holm


Dato : 15-09-03 00:16

Lasse Hedegaard wrote:

> Nu var abc, abd osv. blot eksempler.
> I kategorierne kunne disse være:
> hest, abe, ko (= dyr)
> rød, blå, gul (= farver)

Åh, det fremgik jo så absolut ikke af dit indlæg. Jeg troede, der var
tale om en fortløbende, alfabetisk sekvens.

> Jeg mener jeg har set noget array-sjask til sådan noget - men
> hvordan?

$dyr = array("hest","abe","ko");
$farver = array("rød","blå","gul");

if (in_array($foo, $dyr)) { $bar = "kategori 1"; }
else (in_array($foo, $farver)) { $bar = "kategori 2"; }

   <http://dk.php.net/manual/en/function.in-array.php>

--
Anders Thorsen Holm | http://www.daimi.au.dk/~zoolook/

Overvejer du at købe en DVD-afspiller? Så hold dig fra Fona!
Læs hvorfor: http://www.daimi.au.dk/~zoolook/fona/

Lasse Hedegaard (15-09-2003)
Kommentar
Fra : Lasse Hedegaard


Dato : 15-09-03 11:03

Anders Thorsen Holm skrev:

>Åh, det fremgik jo så absolut ikke af dit indlæg. Jeg troede, der var
>tale om en fortløbende, alfabetisk sekvens.

Ja, min fejl...

>    <http://dk.php.net/manual/en/function.in-array.php>

Bingo - tak!

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/
- også Siemens M55, S55, C55 samt SonyEricsson T610

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste