PDA

Bekijk Volledige Versie : array?



Koen
18/03/07, 15:43
Hallo,

Ik ben bezig met een php-script voor een familiestamboom. Het script werkt,
maar kan op sommige punten wat efficiënter voor mijn gevoel.
Zo bepaalt het script bij het aanroepen van een bepaalde generatie (een
generatie is een groep voorouders) de waarde van enkele variabelen. Volgens
mij moet onderstaand script korter kunnen, met een array misschien, maar ik
krijg dat niet voor elkaar. Wie kan me helpen?

if ($_GET["action"] == gen01) {
$genmenu = "gen01";
$genmin = 1;
$genmax = 63;
}
if ($_GET["action"] == gen07) {
$genmenu = "gen07";
$genmin = 64;
$genmax = 255;
}
if ($_GET["action"] == gen09) {
$genmenu = "gen09";
$genmin = 256;
$genmax = 511;
}
En dan volgen nog zo'n 20 generaties...

Anno
18/03/07, 15:43
"Koen" <koenweb@zonnet.nl> schreef in bericht
news:45fa361e$0$19150$bf4948fe@news.tele2.nl...
> Hallo,
>
> Ik ben bezig met een php-script voor een familiestamboom. Het script
> werkt, maar kan op sommige punten wat efficiënter voor mijn gevoel.
> Zo bepaalt het script bij het aanroepen van een bepaalde generatie (een
> generatie is een groep voorouders) de waarde van enkele variabelen.
> Volgens mij moet onderstaand script korter kunnen, met een array
> misschien, maar ik krijg dat niet voor elkaar. Wie kan me helpen?
>
> if ($_GET["action"] == gen01) {
> $genmenu = "gen01";
> $genmin = 1;
> $genmax = 63;
> }
> if ($_GET["action"] == gen07) {
> $genmenu = "gen07";
> $genmin = 64;
> $genmax = 255;
> }
> if ($_GET["action"] == gen09) {
> $genmenu = "gen09";
> $genmin = 256;
> $genmax = 511;
> }
> En dan volgen nog zo'n 20 generaties...
>
Dat kan met "switch"

switch ($_GET["action"]) {
case "gen01":
$genmenu = "gen01";
$genmin = 1;
$genmax = 63;

break;
case "gen07":
etc

robert
18/03/07, 15:44
Koen <koenweb@zonnet.nl>:
> Hallo,
>
> Ik ben bezig met een php-script voor een familiestamboom. Het script werkt,
> maar kan op sommige punten wat efficiënter voor mijn gevoel.
> Zo bepaalt het script bij het aanroepen van een bepaalde generatie (een
> generatie is een groep voorouders) de waarde van enkele variabelen. Volgens
> mij moet onderstaand script korter kunnen, met een array misschien, maar ik
> krijg dat niet voor elkaar. Wie kan me helpen?
>
> if ($_GET["action"] == gen01) {
> $genmenu = "gen01";
> $genmin = 1;
> $genmax = 63;
> }
> if ($_GET["action"] == gen07) {
> $genmenu = "gen07";
> $genmin = 64;
> $genmax = 255;
> }
> if ($_GET["action"] == gen09) {
> $genmenu = "gen09";
> $genmin = 256;
> $genmax = 511;
> }
> En dan volgen nog zo'n 20 generaties...

Zoiets misschien:

$generaties = array(
gen01 => array("gen01", 1, 63),
gen07 => array("gen07", 64, 255),
gen09 => array("gen09", 256, 511),
# en zo nog 20 generaties verder
);

$gen = $generaties($_GET["action"])
if ($gen)
{
$genmenu = $gen[0];
$genmin = $gen[1];
$genmax = $gen[2];
}
else
{
# bestaat niet!
}

Mij is alleen niet duidelijk wat die gen0X dingen zijn waarmee je
$_GET["action"] vergelijkt (strings?), maar dat kan aan mijn beperkte PHP
kennis liggen :)

--
robert

Rik
18/03/07, 15:44
Koen <koenweb@zonnet.nl> wrote:

> Hallo,
>
> Ik ben bezig met een php-script voor een familiestamboom. Het script
> werkt,
> maar kan op sommige punten wat efficiënter voor mijn gevoel.
> Zo bepaalt het script bij het aanroepen van een bepaalde generatie (een
> generatie is een groep voorouders) de waarde van enkele variabelen.
> Volgens
> mij moet onderstaand script korter kunnen, met een array misschien, maar
> ik
> krijg dat niet voor elkaar. Wie kan me helpen?
>
> if ($_GET["action"] == gen01) {
> $genmenu = "gen01";
> $genmin = 1;
> $genmax = 63;
> }
> if ($_GET["action"] == gen07) {
> $genmenu = "gen07";
> $genmin = 64;
> $genmax = 255;
> }
> if ($_GET["action"] == gen09) {
> $genmenu = "gen09";
> $genmin = 256;
> $genmax = 511;
> }
> En dan volgen nog zo'n 20 generaties...


Wat is de logica van je $genmin & $genmax? Dat kan wellicht een stuk
effectiever als het berekend kan worden nav de nummers in je genXX.

Ook moet je strings quoten, tenzij je constanten met de de gen01 etc. hebt
gedefinieerd (waarbij het zo'n beetje standaard is constanten in
hoofletters te schrijven om verwarring te voorkomen).

Ik zou het nummer in een andere GET value zetten overigens, maakt het een
stuk handzamer.

if($_GET['action'] = 'gen'){
$level = intval($_GET['level']);
$genmenu = 'gen'.$level;
//wat pseudo-berekeningen:
$genmin = pow(2,$level-1);
$genmax = pow(2,$level + 1);
}
--
Rik Wasmus
Posted on Usenet, not any forum you might see this in.
Ask Smart Questions: http://tinyurl.com/anel