[PHP] concatenate string

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tinuske
  • Registratie: September 2002
  • Laatst online: 26-08-2024
Zie onderstaand voorbeeld.
Ik wil eigenlijk op een variabele manier een constante aanroepen.
Even een heel simpel voorbeeld gemaakt, waarvan de output 4 zou moeten zijn.
Ik heb al even gegoogled en ik vermoed dat het erg simpel is, maar kom er even niet uit.
Wie helpt mij ? (hoe moet de laatste regel er dus uitzien)

Alvast bedankt!

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
define("scoreA",4);
define("scoreB",5);
define("scoreC",6);

$type = 1;
switch ($type) {
    case 1:
        $score = "A";
        break;
    case 2:
         $score = "B";
        break;
    case 3:
         $score = "C";
        break;
}

echo (score . $score);

Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 20:33
Ik denk dat je dan op een verkeerde manier bezig bent. Constante gebruik je eigenlijk nooit voor dit soort dingen. Ik zou dit doen dmv een array:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$scores = array('A'=>4, 'B'=>5, 'C'=>6);

$type = 1;
switch ($type) {
case 1:
$score = "A";
break;
case 2:
$score = "B";
break;
case 3:
$score = "C";
break;
}

echo array_key_exists($score, $scores)?$scores[$score]:'Score onbekend';


Die switch lijkt zo ook vrij overbodig, maar dat kan ik niet overzien.

Mocht je het echt willen, dan kan het op deze manier (niet doen, echt niet!)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
eval("$score = score" + $score + ";");

// En waarom niet dit:
$type = 1;
switch ($type) {
case 1:
$score = scoreA;
break;
case 2:
$score = scoreB;
break;
case 3:
$score = scoreC;
break;

[ Voor 23% gewijzigd door storeman op 25-06-2010 16:32 ]

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Als je de documentatie een beetje had doorgelezen had je http://nl.php.net/constant ook wel gevonden (wordt namelijk ook genoemd op de pagina van define()). Overigens zou ik het gewoon met een array aanpakken. Die is dan wel niet constant, maar dat maakt op zich niet zoveel uit.

Daarnaast kun je code in [code=php]...[/code] of [php]...[/php] tags zetten.

[ Voor 8% gewijzigd door .oisyn op 25-06-2010 16:27 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Tinuske
  • Registratie: September 2002
  • Laatst online: 26-08-2024
Bedankt voor jullie reactie.

ik werk nu graag met deze constanten, omdat ik deze overzichtelijk in een apart php bestand heb gezet, waar
je dus eenvoudig alle scores kunt terugvinden.(stuk beheersbaarder als dat je in de code een array gaat aanpassen)

Er staan ook andere constanten in als

PHP:
1
2
3
define("score2A",7);
define("score2B",8);
define("score2C",9);


Als ik het op de manier oplos die ik nu voor ogen heb, ga ik 1 x in het switchstatement in
en kan ik voor 1 type alle constanten opvragen.

Zoiets zou het dan worden:

PHP:
1
2
3
eval("$score = score" + $score + ";"); 
eval("$score += score2" + $score + ";"); 
//enz...


Hoe zouden jullie dit doen, na bovenstaande argumentatie gelezen te hebben ?

Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 20:33
Ik zou een ini bestand maken waarin de waarden staan. Op die manier kun je dat bestand beheren. Het bestand kun je vervolgens inlezen en converteren naar een array.

Overigens is dit ook prima te lezen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
$scores = array(
"scoreA"=>1,
"scoreB"=>1,
"score2A"=>7,
"score2B"=>8,
);

$totalScore = 0;
$totalScore += array_key_exists('score'.$score, $scores)?$scores['score'.$score]:0; 
$totalScore += array_key_exists('score2'.$score, $scores)?$scores['score2'.$score]:0;

[ Voor 23% gewijzigd door storeman op 25-06-2010 16:50 ]

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08
Wil je even 'het grotere verhaal' uitleggen? Misschien kan e.e.a. een stuk eenvoudiger dan jij denkt :).

En eval=evil.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Tinuske schreef op vrijdag 25 juni 2010 @ 16:39:
Bedankt voor jullie reactie.

ik werk nu graag met deze constanten, omdat ik deze overzichtelijk in een apart php bestand heb gezet, waar
je dus eenvoudig alle scores kunt terugvinden.(stuk beheersbaarder als dat je in de code een array gaat aanpassen)
Dat kan met een array net zo goed.
Zoiets zou het dan worden:

PHP:
1
2
3
eval("$score = score" + $score + ";"); 
eval("$score += score2" + $score + ";"); 
//enz...
Waarom ga je nou met eval aan de slag? Heb je de link in mijn vorige post nog gevolgd?
Hoe zouden jullie dit doen, na bovenstaande argumentatie gelezen te hebben ?
Arrays gebruiken.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Heb je in plaats van een bestand al eens gedacht over een database? :)

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Tinuske schreef op vrijdag 25 juni 2010 @ 16:39:
Bedankt voor jullie reactie.

ik werk nu graag met deze constanten, omdat ik deze overzichtelijk in een apart php bestand heb gezet, waar
je dus eenvoudig alle scores kunt terugvinden.(stuk beheersbaarder als dat je in de code een array gaat aanpassen)
Hoezo? Je kan ook prima die array opnemen in dat losse bestand.
Er staan ook andere constanten in als

PHP:
1
2
3
define("score2A",7);
define("score2B",8);
define("score2C",9);


Als ik het op de manier oplos die ik nu voor ogen heb, ga ik 1 x in het switchstatement in
en kan ik voor 1 type alle constanten opvragen.

Zoiets zou het dan worden:

PHP:
1
2
3
eval("$score = score" + $score + ";"); 
eval("$score += score2" + $score + ";"); 
//enz...


Hoe zouden jullie dit doen, na bovenstaande argumentatie gelezen te hebben ?
Ik zou nog steeds een array pakken:

PHP:
1
2
3
4
5
6
7
8
scores1["A"] = 1;
scores1["B"] = 2;
scores1["C"] = 3;


scores2["A"] = 7;
scores2["B"] = 8;
scores2["C"] = 9;

Ik vraag me echter wel af wat je nu precies aan het oplossen bent. Want ik denk dat er handigere oplossing zijn.

edit: [/traag]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Creepy schreef op vrijdag 25 juni 2010 @ 17:08:
Ik zou nog steeds een array pakken:

PHP:
1
2
3
4
5
6
7
8
scores1["A"] = 1;
scores1["B"] = 2;
scores1["C"] = 3;


scores2["A"] = 7;
scores2["B"] = 8;
scores2["C"] = 9;

Ik vraag me echter wel af wat je nu precies aan het oplossen bent. Want ik denk dat er handigere oplossing zijn.

edit: [/traag]
Waarom geen 2D-array?

PHP:
1
2
3
4
$scores[1]["A"] = 1;
$scores[1]["B"] = 2;
$scores[2]["A"] = 3;
$scores[2]["B"] = 4;

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Is ook een optie natuurlijk.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1