[PHP] Variabele toekenning

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 23:33
Ik wil aan de hand van een switch zeg maar bepalen welke variabel een bepaalde waarde krijgt.
Dus zeg maar:
PHP:
1
2
3
4
5
6
7
8
9
switch ($switch)
    {
        case 1:
            $een = $var;
            break;
            
        case 2:
            $twee = $var;
    }

Vervangen door:
PHP:
1
2
3
${$stack ? 'een' : 'twee'} = array($tekst); // werkt, maar niet met arrays object ed  Of
$stack ? $een : $twee = array($tekst); // werkt niet Of
($stack ? $een : $twee) = array($tekst); // werkt ook niet (parse error)


Geen van bovenstaande werken altijd. wat ik me wel kan bedenken is met eval werken, maar daar wordt je ook niet blij van. Klopt het dat het dus niet korter kan?

Acties:
  • 0 Henk 'm!

Verwijderd

wat is er mis met

PHP:
1
2
3
4
if($switch == 1)
    $een = $var;
else
    $twee = $var;

[ Voor 7% gewijzigd door Verwijderd op 24-10-2005 00:23 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Waarom zou je die code willen vervangen? Lijkt mij een vrij duidelijk stukje code, hoewel ik zelf voor een if-blok had gekozen zoals Remco56 het ongeveer laat zien :)

Acties:
  • 0 Henk 'm!

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Waarom niet met een if / else if statement werken?

Anders zou je misschien iets kunnen doen als:
PHP:
1
$stack ? $var = 'een' : $var = 'twee'; $$var = array($tekst);
'

maar beide lijken me nogal lelijke oplossingen :)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

elevator schreef op maandag 24 oktober 2005 @ 00:24:
maar beide lijken me nogal lelijke oplossingen :)
idd, sowieso wil je liever niet met variabele variabele werken, je raakt daarmee snel het overzicht kwijt :P

Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 23:33
Jouw oplossing heb ik dus ook al, alleen wat compacter, maar dat werkt niet met array indexes ed...

Ja waarom ik geen if block wil, uhm ik wil het gewoon kleiner. Ik dacht dat dat wel moest kunnen. Het kan namelijk wel andersom.
PHP:
1
$var = $switch ? $een : $twee;

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

PHP:
1
$switch ? $een=$var : $twee=$var;

;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

crisp schreef op maandag 24 oktober 2005 @ 00:37:
PHP:
1
$switch ? $een=$var : $twee=$var;

;)
en toch zou ik dan nog kiezen voor:
PHP:
1
if ($switch) $een=$var else $twee=$var;

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

chielsen schreef op maandag 24 oktober 2005 @ 00:33:
Ja waarom ik geen if block wil, uhm ik wil het gewoon kleiner.
Leesbaarheid van code is veel belangrijker dan het uitsparen van een paar bytes in je source code.
Erkens schreef op maandag 24 oktober 2005 @ 00:51:
en toch zou ik dan nog kiezen voor:
PHP:
1
if ($switch) $een=$var else $twee=$var;
Omdat? De ternaire operator doet exact hetzelfde en is even goed leesbaar? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

-NMe- schreef op maandag 24 oktober 2005 @ 01:17:
[...]

Leesbaarheid van code is veel belangrijker dan het uitsparen van een paar bytes in je source code.

[...]

Omdat? De ternaire operator doet exact hetzelfde en is even goed leesbaar? :)
Hm, ik zou het zelf ook met een if schrijven. De ternaire operator is imho minder snel leesbaar. En eigenlijk anders alleen omdat de if constructie beter gehighlight wordt :+

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Het kan aan mij liggen, maar ik vind de hele constructie raar. Je hebt al $var, als je die onder een bepaalde voorwaarde voor het een wil gebruiken, en onder een andere voorwaarde voor het ander, dan hoef je daar toch geen aparte variabelen voor te maken?
Mocht het echt nodig zijn zou ik echter een array (mis- | ge-)bruiken:
PHP:
1
$array[$switch] = $var;

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

-NMe- schreef op maandag 24 oktober 2005 @ 01:17:
Leesbaarheid van code is veel belangrijker dan het uitsparen van een paar bytes in je source code.
mee eens :)
Omdat? De ternaire operator doet exact hetzelfde en is even goed leesbaar? :)
Waarom? Net wat je zegt, een operator heb je niet nodig, de return value boeit niet. Ik vind dit misbruik van een operator. Verder is het lastiger te zien wat er nu precies gebeurd omdat je verwacht dat het iets terug geeft.
Een if-statement is daardoor een betere keuze.
Pagina: 1