J'essaie de vérifier si un $ _POST existe et si c'est le cas, imprimez-le dans une autre chaîne, sinon, ne l'imprimez pas du tout.
quelque chose comme ça:
$fromPerson = '+from%3A'.$_POST['fromPerson'];
function fromPerson() {
if !($_POST['fromPerson']) {
print ''
} else {
print $fromPerson
};
}
$newString = fromPerson();
Toute aide est la bienvenue!
empty()
n'est pas correct pour le choix n ° 1, car en php, la chaîne'0'
est équivalente àfalse
- etempty()
renvoietrue
pour toutes les valeurs équivalentes à false . Donc, en utilisantempty
, le code ignorerait l'impression si la valeur était'0'
. Si vous souhaitez exclure la chaîne vide, consultez la réponse d'Augustus.Tout le monde dit d'utiliser isset () - ce qui fonctionnera probablement pour vous.
Cependant, il est important que vous compreniez la différence entre
$_POST['x'] = NULL;
et$_POST['x'] = '';
isset($_POST['x'])
reviendrafalse
sur le premier exemple, mais reviendratrue
sur le second même si si vous essayez d'imprimer l'un ou l'autre, les deux renverront une valeur vide.Si votre
$_POST
vient d'un champ / formulaire saisi par l'utilisateur et est laissé vide, JE CROIS (je ne suis pas sûr à 100% à ce sujet cependant) que la valeur sera "" mais PAS NULL.Même si cette hypothèse est incorrecte (s'il vous plaît, corrigez-moi si je me trompe!), Ce qui précède est toujours bon à savoir pour une utilisation future.
la source
empty()
n'est pas correct ici, car en php, la chaîne'0'
est équivalente àfalse
- etempty()
renvoietrue
pour toutes les valeurs équivalentes à false . Donc, en utilisantempty
, le code ignorerait l'impression si la valeur était'0'
.Surpris qu'il n'ait pas été mentionné
la source
isset($_POST['fromPerson']
esttrue
, même siif($_SERVER['REQUEST_METHOD'] == 'POST'
c'estfalse
. À moins qu'il n'y ait une telle situation, il suffit de laisset...
pièce.fromPerson
peut ne pas être présent, mais POST peut toujours exister. La question était: "Si $ _POST existe." et seulement dans un exemple, $ _POST ['fromPerson'] est utilisé. Dans certaines situations, comme @goat le décrit ici , même s'ilfromPerson
s'agissait d'un nom Submit, il peut ne pas être présent dans POST.la source
La bonne façon de vérifier si la clé de tableau existe est la fonction
array_key_exists()
La différence est que lorsque vous l'avez,
$_POST['variable'] = null
cela signifie que la clé existe et a été envoyée mais que la valeur était nulleL'autre option est
isset()
celle qui vérifiera si la clé du tableau existe et si elle a été définieLa dernière option est d'utiliser
empty()
ce qui vérifiera si la clé du tableau existe si elle est définie et si la valeur n'est pas considérée comme vide.Exemples:
Concernant votre question
La bonne façon de vérifier si la valeur a été envoyée est d'utiliser array_key_exists () avec vérification de la méthode de requête
Mais il y a des cas qui dépendent de votre logique où
isset()
etempty()
peuvent être bons aussi.la source
empty
. Selon le commentaire de Shi sur la réponse d'Augustus Francis ,empty()
n'est pas correct comme choix alternatif, car en php, la chaîne'0'
est équivalente àfalse
- etempty()
renvoietrue
pour toutes les valeurs équivalentes à false . Donc, en utilisantempty
, le code ignorerait l'impression si la valeur était'0'
. Si vous souhaitez exclure la chaîne vide, consultez la réponse d'Augustus.isset
n'est pas appropriée.Selon la documentation PHP: http://php.net/manual/en/function.array-key-exists.php
(voir Exemple # 2 array_key_exists () vs isset () )
La méthode
array_key_exists
est destinée à vérifier la présence de clé dans un tableau.Ainsi, le code de la question peut être modifié comme suit:
la source
isset
solution lorsque le champ de publication est défini mais contient NULL. C'est une bonne alternative , si vous souhaitez autoriserNULL
dans laelse
branche. Cependant , c'est une erreur, si une chaîne est nécessaire; dans cette situationisset
fait la bonne chose, mais ce code ne le fait pas - il transmettra laNULL
valeur. La réponse ultérieure de Robert démontre la différence.Toutes les méthodes sont en fait déconseillées, c'est un avertissement dans Netbeans 7.4 et c'est sûrement une bonne pratique de ne pas accéder directement aux variables super globales, utilisez un filtre à la place
la source
isset
est beaucoup plus lisible qu'une expression de filtre. Mais merci de l'avoir signalé; c'est une option utile à considérer.empty
, déclenchées par la saisie lâche de php; il est difficile d'imaginer qu'accéder à $ _POST serait considéré comme médiocre style.)Essayer
la source
empty($_POST['fromPerson'])
ce test combiné. Plus facile à lire et à taper :)empty('0')
retournetrue
. Ce n'est donc pas pareil.Essayez ?
isset
($_POST['fromPerson'])
la source
la source
is_array()
vérifie s'il s'agit d'un tableau, la deuxième partie vérifie s'il contient un élément avec la clé'fromPerson'
.if( isset($_POST['fromPerson']) )
est correct.Vous pouvez utiliser une fonction et retourner, mieux que diriger l'écho.
la source
J'aime vérifier s'il est défini et s'il est vide dans un opérateur ternaire.
la source
empty('0')
esttrue
. Alors mieux vaut ne pas avoirversion
0
, ouuserID
0
, etc.Je voudrais ajouter ma réponse même si ce fil a des années et qu'il est classé haut dans Google pour moi.
Ma meilleure méthode est d'essayer:
Tout
$_POST
comme un tableau, si le script se charge et qu'aucune donnée n'est présente dans la$_POST
variable, il aura une longueur de tableau de 0. Cela peut être utilisé dans une instruction IF.Vous vous demandez peut-être aussi si cela génère une erreur "index indéfini", comme si nous vérifions si
$_POST
est défini ... En fait$_POST
existe toujours, l'erreur "index indéfini" n'apparaîtra que si vous essayez de rechercher un $ _POST valeur de tableau qui n'existe pas.$_POST
existe toujours en soi, soit vide, soit a des valeurs de tableau.$_POST['value']
peut ne pas exister, générant ainsi une erreur "index indéfini".la source