2009-11-08 6 views
1

peut php retourner un booléen comme ceci:

return $aantal == 0; 

comme en Java, vous pouvez

public boolean test(int i) 
{ 
return i==0; 
} 

ou avez-vous d'utiliser un si contruction? parce que si je fais cela.

$foutLoos = checkFoutloos($aantal); 

function checkFoutloos($aantal) 
{ 
    return $aantal == 0; 
} 

echo "foutLoos = $foutLoos"; 

il écho de

foutLoos = 

pas vrai ou faux

grâce Matthy

Répondre

8

Il renvoie un booléen, mais le booléen n'est pas converti en chaîne lorsque vous le produisez. Essayez ceci:

$foutLoos = checkFoutloos($aantal); 

function checkFoutloos($aantal) 
{ 
    return $aantal == 0; 
} 

echo "foutLoos = " . ($foutLoos ? "true" : "false"); 
+2

juste pour ajouter, chaque fois que vous faites la comparaison (en utilisant les opérateurs de comparaison), le résultat sera booléen . Si vous n'êtes pas sûr, utilisez simplement le casting pour vous assurer qu'il est booléen. 'return (bool) ($ aantal == 0);' – mauris

8

Essayez!

function is_zero($n) { 
    return $n == 0; 
} 

echo gettype(is_zero(0)); 

La sortie:

boolean 
1

Oui, vous pouvez retourner un test booléen dans la fonction de retour. J'aime mettre le mien entre parenthèses pour que je sache ce qui est évalué.

function Foo($Bar= 0) { 
    return ($Bar == 0); 
} 

$Return = Foo(2); 
$Type = var_export($Return, true); 

echo "Return Type: ".$Type; // Return Type: boolean(true) 

En fait, presque tout peut être évalué sur la ligne return. Ne devenez pas fou, car cela peut rendre la refactorisation plus difficile (si vous voulez permettre aux plugins de manipuler le retour, par exemple).

1

oui ideed j'ai découvert que lorsque vous un faux écho que vous obtenez rien et 1 des thats de vrai écho pourquoi j'étais confus;)

+0

PHP est faiblement typé. Il va vous convertir la variable dans le contexte approprié. C'est à la fois bon et mauvais. – matpie

+0

Je ne pense pas que "approprié" soit le mot. Vous voulez transformer un booléen en une chaîne de caractères, de sorte qu'il sélectionne entre "1" et ""? –

1

Oui. vous pouvez même passer à travers l'opérateur ternaire.

function foo($bar == 0) { 
    return ($bar) ? true : false; 
} 
1

Vous pouvez simplement le faire comme cela, je pense, avec coulée de type:

return (bool) $aantal;