[php] waarom werkt deze code niet?

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

  • marcrenzo
  • Registratie: September 2001
  • Laatst online: 03-09 00:02
Ik heb de volgende code:
PHP:
1
<?for($x=0;$x<10;$x++){  if($x == "niks"){ print("verkeerd\n<br>"); }  else{ print("goed"); }  }?>

Nou drukt hij ten alle tijde de regel van "verkeerd" af, terwijl $x nooit "niks" is. Wat doe ik hier in hemelsnaam verkeerd. Ik snap er niks meer van. |:(

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 09-09 23:30
Lijkt me sterk :{

  • J3roen
  • Registratie: Januari 2000
  • Niet online

J3roen

Intentionally left blank

Op woensdag 17 april 2002 15:02 schreef marcrenzo het volgende:
Ik heb de volgende code:
PHP:
1
<?for($x=0;$x<10;$x++){  if($x == "niks"){ print("verkeerd\n<br>"); }  else{ print("goed"); }  }?>

Nou drukt hij ten alle tijde de regel van "verkeerd" af, terwijl $x nooit "niks" is. Wat doe ik hier in hemelsnaam verkeerd. Ik snap er niks meer van. |:(
Je weet zeker dat je == hebt en geen =?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

uitvoer bij mij is
code:
1
2
verkeerd 
goedgoedgoedgoedgoedgoedgoedgoedgoed

Doet iets met Cloud (MS/IBM)


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

:? Dit kan niet. Als dit:
code:
1
2
3
4
5
6
7
8
for ( $x = 0; $x < 10; $x++ ) { 
   if($x == "niks") { 
    print("verkeerd\n<br>"); 
   }
   else { 
    print("goed"); 
   }
}

exact je code is print hij gewoon
goedgoedgoedgoedgoedgoedgoedgoedgoedgoed

Er is vast meer aan de hand. Post de code waar het om gaat eens?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 11:19

mulder

ik spuug op het trottoir

Het is al sowieso vreemd dat je er een numerieke waarde instopt, en het dan vergelijkt met een string.

oogjes open, snaveltjes dicht


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

voor ed non believers
http://www.d2k.nl/got/marcrenzo.php

Doet iets met Cloud (MS/IBM)


  • marcrenzo
  • Registratie: September 2001
  • Laatst online: 03-09 00:02
Op woensdag 17 april 2002 15:11 schreef Don Facundo het volgende:
Het is al sowieso vreemd dat je er een numerieke waarde instopt, en het dan vergelijkt met een string.
Daar gaat het niet om, want ik gebruik het wel om een integer te checken alleen voor dit voorbeeld leek het mij duidelijk, maar de code zoals drm het heeft heb ik weer letterlijk in een notepad ingevoerd en dan gedraaid met de webserver en weer krijg ik de output:

verkeerd
goedgoedgoedgoedgoedgoedgoedgoedgoed

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op woensdag 17 april 2002 15:10 schreef D2k het volgende:
uitvoer bij mij is
code:
1
2
verkeerd 
goedgoedgoedgoedgoedgoedgoedgoedgoed
bij mij precies dezelfde uitvoer...
maar hoe kan dat :? is dit een bug :?

verkeerd
goedgoedgoedgoedgoedgoedgoedgoedgoed

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 09-09 23:30
Dit is wel raar :{

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 11:19

mulder

ik spuug op het trottoir

Het lijkt me op de een of andere manier logisch. Kan het niet uitleggen maar (de string) "niks" zal gelijk zijn aan nul als je het met een numerieke waarde vergelijkt. false als je wilt. volgens mij is dit niet alleen in php.

oogjes open, snaveltjes dicht


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Uhhhh... of ik ben heel erg scheel (of ik snap de grap niet), maaruh:

$x neemt waarden van 0 tot 10 aan.
code:
1
2
$x = 0   ==> $x == "niks" == true (want (int)"niks" == 0)
$x = 1..10   ==> $x == "niks" == false (waant (int)"niks" == 0)

De eerste keer in de lus print ie "verkeerd" en daarna 9x "goed"..

:?

Ook al is PHP erg flexibel met types, dit lijkt me toch niet de bedoeling (getallen met woorden vergelijken)

SIZE does matter.
"You're go at throttle up!"


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 09-09 23:30
Misschien is 0 wel alles, zodat alles hetzelfde is als 0 (zolang het een string betreft). :{

  • Sorcerer8472
  • Registratie: Januari 2002
  • Laatst online: 12:14

Sorcerer8472

Mens sana?

Argh... Skinny heeft gelijk :o

Reality is merely an illusion, albeit a very persistent one.


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Doet iets met Cloud (MS/IBM)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

strcmp gebruiken? :)

Waarom ga je dan ook een getal met een string vergelijken, doe dan "$x" == "niks" ;)

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Op woensdag 17 april 2002 15:23 schreef D2k het volgende:
http://www.d2k.nl/got/marcrenzo2.php
zo dus wel :)
Deze code doet mij gewoon hetzelfde :
code:
1
2
3
4
mark@trinity:/www/breakie$ php4 -q test.php 
verkeerd
<br>goedgoedgoedgoedgoedgoedgoedgoedgoed<br> 
mark@trinity:/www/breakie$

SIZE does matter.
"You're go at throttle up!"


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op woensdag 17 april 2002 15:25 schreef Skinny het volgende:

[..]

Deze code doet mij gewoon hetzelfde :
code:
1
2
3
4
mark@trinity:/www/breakie$ php4 -q test.php 
verkeerd
<br>goedgoedgoedgoedgoedgoedgoedgoedgoed<br> 
mark@trinity:/www/breakie$
moest me showsource nog ff aanpassen :X

Doet iets met Cloud (MS/IBM)


  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
PHP:
1
<?if (0 == "niks") { echo "Gelijk aan elkaar!!!"; }?>

en ja hoor de output is: Gelijk aan elkaar!!!

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Zow, en wie gaat er strcmp($x, "niks") vs "$x" == "niks" benchmarken? :+

[edit]
of
if((string)$x == "niks")
? :)

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Op woensdag 17 april 2002 15:25 schreef D2k het volgende:
moest me showsource nog ff aanpassen :X
Dankzij een oplettende gebruiker O-) :+

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Op woensdag 17 april 2002 15:25 schreef D2k het volgende:

[..]

moest me showsource nog ff aanpassen :X
ok, ik ziet het, maar dan nog..

Als een koe gelijk is aan een schaap, dan is het schaap kaal.. (nutteloze vergelijking)

Als (int)4 gelijk is aan (string)"niets" print dan iets.. (nutteloze vergelijking imho)

SIZE does matter.
"You're go at throttle up!"


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op woensdag 17 april 2002 15:28 schreef ACM het volgende:
Zow, en wie gaat er strcmp($x, "niks") vs "$x" == "niks" benchmarken? :+

[edit]
of
if((string)$x == "niks")
? :)
:X

Doet iets met Cloud (MS/IBM)


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

en DAAROM zuigt type-juggling dus.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

http://www.php.net/manual/en/function.strcmp.php
Description
int strcmp ( string str1, string str2)


Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.
Hmm.. hoe het hekje, komt iemand erop om deze funktie er bij te halen, dat vraag ik me nou af..

0 < "niks" ??? (ja tuurlijk)


[edit]
Ohja,
code:
1
2
3
4
5
1000 loops with (string)0 == "niks":
0.004548 seconds

1000 loops with strcmp($x, "niks"):
0.007156 seconds

SIZE does matter.
"You're go at throttle up!"


  • Grum
  • Registratie: Juni 2001
  • Niet online
http://www.e-gineer.com/articles/php-hackers-paradise-revisited.phtml

en dan scrollen naar hoofdstukje 7: Know Your Data

Basis PHP kennis dit :D
Pagina: 1