get_transient (), PHP switch () und Vergleichsoperatoren

Ich verwende einen WordPress-Übergang, der nach einer Stunde abläuft, um einen Wert zu speichern, der eine ganze Zahl ist. Ich versuche, switch() und mehrere case() -statementen zu verwenden, um zu bewerten, ob der Übergang existiert oder nicht (dh wahr oder falsch).

Hier sind meine Fragen:

  1. Welcher Vergleichsoperator ( = , == , === ), in Beispiel 2, ist für diesen Kontext ideal?
  2. Welches der folgenden Beispiele ist angemessen?
  3. Würden die folgenden Beispiele dasselbe Ergebnis liefern?

Beispiel 1:

 $transient = get_transient( 'foobar' ); switch( $transient ) : case( true ) : // do stuff break; case( false ) : // do stuff break; endswitch; 

gegen

Beispiel 2:

 $transient = get_transient( foobar ); switch( $transient ) : case( $transient = true ) : // do stuff break; case( $transient = false ) : // do stuff break; endswitch; 

Danke im Voraus.

Solutions Collecting From Web of "get_transient (), PHP switch () und Vergleichsoperatoren"

Muss es einen Schalter benutzen?

warum nicht so etwas:

 if ( false === ( $value = get_transient( 'value' ) ) ) { // this code runs when there is no valid transient set } else { // this code runs when there is a valid transient set } 

Wenn der Transient einen Wert zurückgibt, wird er nicht wahr zurückgegeben. Es gibt den Wert des Übergangs zurück. Wenn der Transient nicht gesetzt ist, gibt er bool (false) zurück

Wenn Sie einen Schalter verwenden, wäre es so:

$ transient = get_transient (foobar);

 switch( $transient ) : case false: // transient not set break; default: // transient didnt return false break; endswitch; 

Ich denke, switch ist ein wenig zu sperrig dafür. Auch Ihr zweites Beispiel ist definitiv kein Weg, dies zu tun.

 $transient = get_transient( 'foobar' ); if( false !== $transient ) { // boolean false or has no value //code goes here } else { // any other case //code goes here } 

=== / !== Vergleichen Sie nach Wert und geben Sie so ein, auch wenn Ihre Transiente ganzzahlig 0 , wird sie nicht als false .

Ihre beiden Beispiele sind falsch für den von get_transient zurückgegebenen Wert. get_transient gibt false zurück, wenn der Transient nicht gefunden wird, aber was ist, wenn der transiente Wert 0 ist, wird er auch als false ausgewertet.

Die PHP-switch-statement führt immer den losen Vergleich durch, sodass Sie möglicherweise nicht die gewünschten Ergebnisse erhalten, wenn der transiente Wert 0 ist. Daher ist es besser, in diesem Fall nicht switch zu verwenden, sondern stattdessen if.

Obwohl das Beispiel 1 funktioniert, wenn Sie sicher sind, dass Ihre transienten Werte niemals als falsch bewertet werden.