[php] Bug bij optellen met een conditional statement

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ik denk dat ik een bug heb gevonden, maar mischien doe ik iets fout. Ik probeer een variabel te manipuleren aan de hand van een conditional statement:
PHP:
1
2
$test = 4 + ( 1==1 ) ? -1 : 1;
print $test;

De zojuist gegeven code output bij mij de waarde -1. Dit echter:
PHP:
1
2
$test = 4 + ( ( 1==1 ) ? -1 : 1 );
print $test;

levert de waarde 3 op. Het is verder geen probleem ofzo, maar ik vond het toch een beetje raar. Ik draai overigens Apache 2.0.49 + PHP 4.3.7 final op Windows XP SP1. Nog meer mensen die hier last van hebben?

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Syntax 1 is gewoon fout.
PHP:
1
2
3
4
5
<?
//zo mag het wel:
$test = 4 + ( 1==1 ? -1 : 1); 
print $test;
?> 

Acties:
  • 0 Henk 'm!

Verwijderd

Last van hebben? Het gaat gewoon helemaal goed.

4 + ( 1 == 1 ) is gelijk aan 5
(true is gelijk aan 1 als je het naar een integer cast)

5 wordt gezien als true omdat het een getal is groter dan 0

Je krijgt dus terecht -1 terug.

Acties:
  • 0 Henk 'm!

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 15-05 16:29

Macros

I'm watching...

Dat soort dingen krijg je bij een loosly typed taal zoals PHP. Java zou een foutmelding geven.

"Beauty is the ultimate defence against complexity." David Gelernter


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ah, ok ik zie het. Had ik zelf ook wel op kunnen komen 8)7 (beetje teveel geprogged vandaag mischien :))

Bedankt iig.

Noushka's Magnificent Dream | Unity