43 votes

La valeur booléenne imprimée par PHP est vide, pourquoi ?

Je suis nouveau en PHP. J'implémente un script et je suis intrigué par les éléments suivants :

 $local_rate_filename = $_SERVER['DOCUMENT_ROOT']."/ghjr324l.txt";
$local_rates_file_exists = file_exists($local_rate_filename);

echo $local_rates_file_exists."<br>";

Ce morceau de code affiche une chaîne vide, plutôt que 0 ou 1 (ou vrai ou faux). Pourquoi? La documentation semble indiquer qu'une valeur booléenne est toujours 0 ou 1. Quelle est la logique derrière cela ?

53voto

dynamic Points 16778

Soyez prudent lorsque vous convertissez en va-et-vient avec booléen, le manuel dit :

Une valeur booléenne TRUE est convertie en la chaîne "1". Le booléen FAUX est converti en "" (la chaîne vide). Cela permet la conversion en arrière et entre les valeurs booléennes et de chaîne.

Il faut donc faire un :

 echo (int)$local_rates_file_exists."<br>";

1voto

clime Points 2431

Les résultats proviennent du fait que php convertit implicitement les valeurs booléennes en chaînes s'il est utilisé comme dans votre exemple. (string)false donne une chaîne vide et (string)true donne '1' . Cela est cohérent avec le fait que '' == false et '1' == true .

0voto

bsthomsen Points 299

Si vous voulez vérifier si le fichier existe lorsque vous n'êtes pas sûr que le type de retour est vrai/faux ou 0/1, vous pouvez utiliser ===.

 if($local_rates_file_exists === true)
{
   echo "the file exists";
}
else
{
   echo "the doesnt file exists";
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X