2009-03-20 7 views
3

Considérez ce qui suitPHP - Les meilleures pratiques évaluer si la déclaration

if(!count($_POST)) { echo 'something'; } 
if(empty($_POST)) { echo 'something'; } 
if(!$_POST) { echo 'something'; } 

Chaque ligne ci-dessus à peu près la même chose. Je n'ai pas été particulier sur celui que j'utilise. Devrais-je être plus particulier? Est-ce que c'est vraiment important?

+0

juste un rappel il n'y a pas « is_empty() » fonction, il est juste « vide() » –

+0

Demandez-vous plus précisément sur la vérification $ _POST ou des tableaux en général? $ _POST est un cas particulier car il va toujours être défini. –

Répondre

9

J'utiliser:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // POST request 
} 
+0

Voilà ce que j'utilise! Et je vérifie aussi que mes formulaires/arguments sont là et sûrs aussi. –

+0

Oh, et je pense que le "bon" moyen serait d'avoir des "post" minuscules (comme si cela avait vraiment de l'importance). –

+0

La méthode correcte pour POST dans $ _SERVER ['REQUEST_METHOD'] est 'POST' (majuscule), tout comme c'est le cas dans l'en-tête HTTP. – Jacco

0

Quoi que vous choisissiez, soyez cohérent avec lui!

1

J'ai toujours préféré utiliser empty() car il retourne Vrai si la variable d'argument est soit pas définie ou mais prend la valeur false (qui un tableau vide). Cela sauve un pas dans mon esprit et remplace l'équivalent if(!isset($_POST) || !$_POST) { echo 'something'; } que le chaos vient d'être mentionné.

1

Si vous souhaitez tester si la demande a été faite en utilisant une requête POST, alors en cochant $ _SERVER ['request_method'] est le chemin à parcourir.

Si vous voulez savoir si un tableau est vide, il y a quelques différences:

  • vide()

vide vérifie si une variable est « vide ». PHP considère les valeurs suivantes pour être vide:

* "" (an empty string) 
* 0 (0 as an integer) 
* "0" (0 as a string) 
* NULL 
* FALSE 
* array() (an empty array) 
* var $var; (a variable declared, but without a value in a class) 

vide est une construction linguistique, ce qui signifie que vous ne pouvez pas l'utiliser comme un rappel, de sorte que le suivant échouera:

$var = array(); call_user_func('empty', $var); 

Il a également seulement vérifie les variables, donc ce qui suit échoue avec une fatale aussi:

if (empty(array()) { // do something } 

il est également plus rapide que compter, mais cela ne devrait pas vous faire considèrent par rapport aux autres.

  • count()

Count est une fonction "normal", il va d'abord coulé le paramètre à un tableau, et de vérifier si elle est vide. Personnellement, je voudrais utiliser cela pour vérifier les tableaux vides.

  • si (valeur $) {// faire quelque chose}

Cela diffère un peu de nombre, parce que la valeur de $ ici sera jeté à un booléen, et parce que des tableaux vides exprimés à faux, il obtiendra le même résultat que le compte.

Il y a un très grand Gotcha impliqué en raison de la fonte:

$var = ''; // empty string 
var_dump(empty($var)); // returns true 
var_dump(count($var)); // returns false 
Questions connexes