Existe-t-il une fonction intégrée pour PHP qui prend une valeur booléenne et renvoie son équivalent entier? 0 pour FALSE, 1 pour TRUE? Bien sûr, vous pouvez facilement créer une fonction pour le faire, je demande simplement s'il existe une fonction intégrée dans PHP. J'ai déjà essayé intval()
et le transforme en (int)
mais ils ne fonctionnent pas, ils renvoient 0 dans les deux cas TRUE et FALSE.
Edit: le problème était que ce n'était pas vraiment un booléen, c'était une chaîne "false", "true", php n'a pas détecté le message jQuery qu'il a passé un booléen. problème résolu, merci!
http://www.php.net/manual/en/language.types.integer.php
Normalement, simplement $myInt = (int)$myBoolean
devrait fonctionner, pouvez-vous nous montrer votre code autrement?
Ajoutez simplement un "+" avant votre variable comme ceci:
$myBool = true;
var_dump(+$myBool);
ouputs: int(1);
Si vous obtenez votre valeur de JSON I.E. Via un POST AJAX, la valeur entrera sous forme de chaîne (comme vous l'avez trouvé). Une solution consiste à comparer la chaîne true/false, puis à convertir le bool en int
$requestBool = $_REQUEST['bool_value']; //This is 'true' or 'false'
$myInt = (int)($requestBool === 'true');
echo $myInt;
//returns: 0 or 1
Si vous n'êtes pas sûr du type de données, voir l'exemple ci-dessous, il fonctionne avec les chaînes, les entiers et les booléens.
<?php
$options = [ TRUE, FALSE, 'true', 'false', 1, 0, '1', '0', 'on', 'off', 'yes', 'no' ];
foreach ( $options as $option ) {
$bool = filter_var( $option, FILTER_VALIDATE_BOOLEAN ); // TRUE or FALSE
print (int) $bool . ' '; // 1 or 0
}
// Outputs: 1 0 1 0 1 0 1 0 1 0 1 0
?>
filter_var ($ var, FILTER_VALIDATE_BOOLEAN) retournera bool (true) ou bool (false) puis sera simplement convertie en entier.
(PHP 5> = 5.2.0, PHP 7)
filter_var - Filtre une variable avec un filtre spécifié
echo (int)true;
echo '<br>';
echo (int)false;
echo '<br>';
echo intval(true);
echo '<br>';
echo intval(false);
echo '<br>';
echo true + true;
Vous pouvez faire plusieurs castings en une seule fois:
$isTest = 'true';
(int)(bool)$isTest
echo $isTest; // this outputs 1