abonnement Unibet Coolblue Bitvavo
  vrijdag 19 maart 2004 @ 19:24:03 #1
24399 TechXP
www.biteback.be
pi_17831094
Ik had iets geprogrammeerd. Iets wat er ongeveer zo uit zag:

function eenfunctie {
if (x) {
return true;
} els e{
return false;
}

}

Echter nu lijkt dat opeens niet meer te werken. Wel werkt het als ik true en false tussen " en " zet.
Iemand een idee hoe dat komt?
pi_17831141
Dat ligt maar net aan de rest van je code?

Zoiets zou gewoon moeten werken:

<?

function isseven($x)
{
if ($x == 7)
return true;
else
return false;
}

$a = 6 + 1;
if (isseven($a) == true) //==true niet echt nodig, maar voor de duidelijkheid
echo "\$a is zeven!";

?>
  vrijdag 19 maart 2004 @ 19:30:09 #3
24399 TechXP
www.biteback.be
pi_17831188
quote:
Op vrijdag 19 maart 2004 19:26 schreef JeRa het volgende:
Dat ligt maar net aan de rest van je code?
Nou ik denkt dat de rest van de code niet echt uitmaakt. Maar return "true" of return true.
Het is altijd het laatste geweest, maar opeens doet deze dat neit meer. En moet ik de hele tijd "true" neerzetten. Beetje raar.
Misschien dat de hoster iets in de instellingen ofzo heeft gedaan.
pi_17831241
quote:
Op vrijdag 19 maart 2004 19:30 schreef TechXP het volgende:

[..]

Nou ik denkt dat de rest van de code niet echt uitmaakt. Maar return "true" of return true.
Het is altijd het laatste geweest, maar opeens doet deze dat neit meer. En moet ik de hele tijd "true" neerzetten. Beetje raar.
Misschien dat de hoster iets in de instellingen ofzo heeft gedaan.
Het ligt wel aan de rest van de code, want die controleert immers de return-waarde van de functies. De waarde "true" is een string, en true (zonder aanhalingstekens) is een ingebouwde waarde in PHP. Het gaat dus om hoe de return-waardes worden gecontroleerd, zo:

if (functie() == true) {

of

if (functie()) {

zouden gewoon moeten werken met true, maar dit:

if (functie() == "true") {

vereist een string als returntype.
pi_17831393
Voor meer informatie over booleans en hoe ze te checken:

PHP: Booleans
pi_17831420
check met gettype() wat voor type variabele je checked. Is het echt een boolean of een string.
Beter een baas onder je duim, dan tien bovenop
Trekt bij warm weer een poncho aan
pi_17831583
"true" ===> String
true ===> Boolean

Wat misschien ook fout kan zijn: Heb je in een if-voorwaarde wel een vergelijkingsteken gezet? Dus dubbele isgelijktekens (==). Als je maar 1 isteken gebruikt is het een toewijzing en dus ALTIJD true!
pi_17831617
quote:
Op vrijdag 19 maart 2004 19:55 schreef joostvpoppel het volgende:
Wat misschien ook fout kan zijn: Heb je in een if-voorwaarde wel een vergelijkingsteken gezet? Dus dubbele isgelijktekens (==). Als je maar 1 isteken gebruikt is het een toewijzing en dus ALTIJD true!
In dat geval maakt de return-type niet uit, en dan zou het script altijd moeten werken ongeacht of het true of "true" is.
pi_17831657
Maakt wel uit, hij krijgt toch nooit false terug...

Wellicht kan de TP duidelijker weergeven wat nu eigenlijk het probleem is. Post je code eens!
pi_17831694
quote:
Op vrijdag 19 maart 2004 20:00 schreef joostvpoppel het volgende:
Maakt wel uit, hij krijgt toch nooit false terug...
Waar zegt hij dat?

Bij een assignment maakt het niet uit of het een boolean of een string is, en dus zou het probleem ook niet moeten optreden in de return-type van de functie maar in de "hoofdcode".
quote:
Wellicht kan de TP duidelijker weergeven wat nu eigenlijk het probleem is. Post je code eens!


edit: ik geloof dat PHP ook een waarschuwing geeft als je een assignment binnen een if-comparison zet, dus die ballon gaat niet op

edit2: sorry, dat was gcc/g++ die dat deed, PHP reageert er niet op.

[ Bericht 8% gewijzigd door JeRa op 19-03-2004 20:08:08 ]
pi_17831792
Jep, dus zoiets zou moet werken:
<?php
function FokFunctie($var)
{
if($var == 1) {return true;}
else {return false;}
}
if (FokFunctie(1) == true)
{
echo "Fok Rulez!";
}
?>
  vrijdag 19 maart 2004 @ 20:22:36 #12
24399 TechXP
www.biteback.be
pi_17832092
quote:
Op vrijdag 19 maart 2004 20:00 schreef joostvpoppel het volgende:
Maakt wel uit, hij krijgt toch nooit false terug...

Wellicht kan de TP duidelijker weergeven wat nu eigenlijk het probleem is. Post je code eens!
Ik dacht dat het wel duidelijk was.

Als ik een functie heb die een true of false terugkeert, dan doet deze niks.

function allesok($p) {
if ($p==1) {
return true;
} else {
return false;
}
}
Dit werkte perfect. Maar opeens doet deze het niet. De return statement lijkt geen true of false terug te geven.

Ook als ik van te voren neerzet: $s = true;
En dan return $s, dan doet deze het neit. Wel kan ik een string teruggeven in de vorm van "true" (of iets anders), waarna deze het wel doet. Maar dat heeft te maken dat deze dan wel iets teruggeeft. Maar true of false lijken niet te werken. Stukje code:

function hasProfile() {
if ($this->userprofile==0) {
return false;
} else {
return true;
}
}

Hier geeft de functie hasProfile() dus niks terug of iig niks.
pi_17832167
quote:
Op vrijdag 19 maart 2004 20:22 schreef TechXP het volgende:
Als ik een functie heb die een true of false terugkeert, dan doet deze niks.

function allesok($p) {
if ($p==1) {
return true;
} else {
return false;
}
}
Dit werkte perfect. Maar opeens doet deze het niet. De return statement lijkt geen true of false terug te geven.
Doe eens dit:

$a = allesok(1);
echo gettype($a);
$a = allesok(0);
echo gettype($a);

Zo weet je precies wat je terugkrijgt...
pi_17832334
quote:
Als ik een functie heb die een true of false terugkeert, dan doet deze niks.
Wat bedoel je met "dan doet deze niks"??? Je weet toch dat hij niets op het scherm terug zet als je een return waarde TRUE of FALSE hebt??!?!?!!? Een string kan wel getoond worden op het scherm....

Volgens mij verwacht jij gewoon als je het volgende intypt de waarde TRUE op het scherm. Dit is niet zo...
<?php
function FokRulez($var)
{
if($var == 1){return true;} else {return false;}
}
FokRulez(1);
?>


Of snap ik hem nog steeds niet?

[ Bericht 9% gewijzigd door joostvpoppel op 19-03-2004 20:39:53 ]
  vrijdag 19 maart 2004 @ 21:31:45 #15
24399 TechXP
www.biteback.be
pi_17833566
quote:
Op vrijdag 19 maart 2004 20:32 schreef joostvpoppel het volgende:
Of snap ik hem nog steeds niet?
Nee, het gaat niet om op iets op het scherm printen.

Maar ik ga me code nog eens even nalopen. En even dat ding herschrijven.
  zaterdag 20 maart 2004 @ 12:18:22 #16
30106 Hiawatha
Had ie nu maar een camera.....
pi_17842263
Effe een beetje offtopic, maar ik kan het niet laten om hetvolgende de melden:

function onzin($x)
if ($x == 1) {
return true;
} else {
return false;
}
}

kan natuurlijk veel korter:

function onzin($x) {
return ($x == 1);
}
  zaterdag 20 maart 2004 @ 15:16:53 #17
40780 Darkysdust
step into the dark
pi_17845510
quote:
Ook als ik van te voren neerzet: $s = true;
En dan return $s, dan doet deze het neit. Wel kan ik een string teruggeven in de vorm van "true" (of iets anders), waarna deze het wel doet.
Dat lijkt me gewoon normaal gedrag hoor. Als je $s op true zet, wil zeggen dat ie bestaat, niet dat ie gevuld is. Je zet hem als het ware alleen 'aan'. Als je vervolgens return $s doet, is ie leeg. Kies je voor $s = "true" dan vul je de variabele met de string "true" en krijg je die terug. Check ook de post van Vanpoppel.

Maar misschien wordt het duidelijker als je gewoon eens vertelt wat je met je code wil bereiken, en dan e echt code gewoon post.
Postatem obscuri lateris nescitis
  zaterdag 20 maart 2004 @ 15:59:48 #18
2671 Aaargh!
Gebruik op eigen risico.
pi_17846508
quote:
Op zaterdag 20 maart 2004 15:16 schreef Darkysdust het volgende:

[..]

Dat lijkt me gewoon normaal gedrag hoor. Als je $s op true zet, wil zeggen dat ie bestaat, niet dat ie gevuld is.
Je zou verwachten dat ie de booleaanse waarde True heeft, da's een beetje het verneukte van PHP, het is niet sterk getypeerd waardoor je dit soort ongein krijgt.
It is impossible to live a pleasant life without living wisely and well and justly.
And it is impossible to live wisely and well and justly without living a pleasant life.
  dinsdag 23 maart 2004 @ 19:34:56 #19
40780 Darkysdust
step into the dark
pi_17920119
quote:
Op zaterdag 20 maart 2004 15:59 schreef Aaargh! het volgende:

[..]

Je zou verwachten dat ie de booleaanse waarde True heeft, da's een beetje het verneukte van PHP, het is niet sterk getypeerd waardoor je dit soort ongein krijgt.
mmm...niet helemaal. PHP is een taal waarin booleans een integer krijgen (http://perl.about.com/library/weekly/aa052100b.htm). Op die manier kan je er 'makkelijker' mee omgaan (tis natuurlijk maar net wat je makkelijker vindt.0.
Postatem obscuri lateris nescitis
pi_17921816
quote:
Op vrijdag 19 maart 2004 19:24 schreef TechXP het volgende:
Ik had iets geprogrammeerd. Iets wat er ongeveer zo uit zag:

function eenfunctie {
if (x) {
return true;
} els e{
return false;
}

}

Echter nu lijkt dat opeens niet meer te werken. Wel werkt het als ik true en false tussen " en " zet.
Iemand een idee hoe dat komt?
function eenfunctie {
return (x);
}

IIs dat niet veel makkelijker?
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')