0 votes

En PHP, "if($value)" est-il la réciproque de "if(empty($value))" ?

En générant un select pour une valeur booléenne, j'utilise le code suivant :

<select name="name" id="id">
    <option value="0"<?php if(empty($value)): ?> selected="selected"<?php endif; ?>>Off</option>
    <option value="1"<?php if($value): ?> selected="selected"<?php endif; ?>>Off</option>
</select>

Donc, la question est de savoir si cette carte sera correcte, de sorte qu'à aucun moment, les deux options n'auront une selected="selected" la propriété ?

3voto

La seule raison que je vois pour utiliser empty() ici est d'éviter les avertissements en cas $value n'est pas réglé. Mais dans ce cas, vous obtenez l'avertissement de la ligne suivante. Il est plus courant et plus joli d'utiliser ! pour nier les booléens autrement.

Mais pour répondre à votre question, oui, votre hypothèse est sûre.

Mise à jour : Le site documentation indique explicitement que

vide() est le contraire de (booléen) var sauf qu'aucun avertissement n'est généré lorsque la variable n'est pas définie.

1voto

Gumbo Points 279147

(bool) $value est équivalent à !empty($value) y !$value est équivalent à empty($value) . Voir le Tableaux de comparaison des types de PHP pour plus d'informations.

0voto

fsb Points 2741

EIntéressant. En parlant de ça :

  • $value est la réciproque de empty($value)

est, à mon avis, équivalent à affirmer que

  • (bool) $value est égal à !empty($value)

Dans votre exemple de code $value est un bool, dans ce cas l'assertion est vraie (et la réponse de Michael Krelin - hacker que votre hypothèse est sûre est vraie).

Mais cette affirmation est-elle généralement vrai ? Compte tenu de la documentation du manuel empty() Je pense que ça pourrait l'être.

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