2009-03-20 9 views
3

Betrachten Sie die folgendePHP - Best Practices zu überprüfen Anweisung

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

Jede Zeile über so ziemlich das gleiche tun. Ich bin nicht besonders darauf eingegangen, welchen ich benutze. Sollte ich genauer sein? Ist es wirklich wichtig?

+0

nur eine Erinnerung gibt es keine „is_empty()“ Funktion, es ist nur „leer()“ –

+0

Sind Sie fragen, speziell über $ _POST Überprüfung oder Arrays im Allgemeinen? $ _POST ist ein Sonderfall, da es immer definiert wird. –

Antwort

9

würde ich verwenden:

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

Das ist was ich benutze! Und ich überprüfe auch, ob meine Formulare/Argumente da sind und auch sicher sind. –

+0

Oh, und ich denke, der "richtige" Weg wäre es, Kleinbuchstaben zu schreiben (als ob es wirklich wichtig wäre). –

+0

Der korrekte Weg für POST in $ _SERVER ['REQUEST_METHOD'] ist 'POST' (Großschreibung), genau wie im HTTP-Header. – Jacco

0

Was immer Sie auswählen, seien Sie konsequent damit!

1

Ich habe immer empty() bevorzugte Verwendung, da es True zurück, wenn das Argument Variable entweder nicht gesetzt oder eingestellt ist, sondern das Ergebnis falsch (was ein leeres Array wird). Das speichert einen Schritt in meinem Kopf und ersetzt das Äquivalent if(!isset($_POST) || !$_POST) { echo 'something'; } das gerade erwähnte Chaos.

1

Wenn Sie testen möchten, ob die Anfrage mit einer POST-Anfrage gestellt wurde, dann ist die Überprüfung von $ _SERVER ['request_method'] der richtige Weg.

Wenn Sie herausfinden möchten, ob ein Array leer ist, gibt es einige Unterschiede:

  • leer()

Leer prüft, ob eine Variable "leer" ist. PHP betrachtet die folgenden Werte leer zu sein:

* "" (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) 

Leer ein Sprachkonstrukt, das bedeutet, dass Sie es nicht als Rückruf verwenden können, so dass die folgenden fehl:

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

Es ist auch nur Kontrollen Variablen, so dass die folgenden mit tödlichem scheitern:

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

es ist auch schneller als zählen, aber das sollte man es über die andere nicht machen betrachten.

  • Zählung()

Count eine "normale" Funktion ist, wird es zuerst gegossen die Parameter auf einen Array, und prüfen, ob sie leer ist. Persönlich würde ich das verwenden, um leere Arrays zu überprüfen.

  • if ($ value) {// etwas tun}

Das von Graf ein wenig unterscheidet, weil Wert $ hier auf eine boolean gegossen werden, und weil leere Arrays auf falsch gegossen, es erreicht das gleiche Ergebnis wie die Zählung. Gotcha beteiligt wegen des Gießens

Es gibt eine sehr große ist:

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