Heim php教程 PHP开发 Ausführliche Erläuterung der „erweiterten' Verwendung der PHP-Switch-Urteilsanweisung

Ausführliche Erläuterung der „erweiterten' Verwendung der PHP-Switch-Urteilsanweisung

Dec 26, 2016 am 10:58 AM

Der Grund, warum es als „erweiterte“ Verwendung bezeichnet wird, liegt darin, dass ich noch nicht einmal die grundlegendste Verwendung von Switch beherrsche. Ich werde also als Nächstes über seine grundlegende Verwendung sprechen! Die

switch-Anweisung ähnelt einer Reihe von IF-Anweisungen mit demselben Ausdruck. Es gibt viele Situationen, in denen Sie dieselbe Variable (oder denselben Ausdruck) mit vielen verschiedenen Werten vergleichen und je nachdem, welchem ​​Wert sie entspricht, unterschiedlichen Code ausführen müssen. Genau dafür ist die switch-Anweisung gedacht.

Hinweis: Beachten Sie, dass sich die continue-Anweisung im Gegensatz zu anderen Sprachen ähnlich wie break verhält, wenn sie auf switch angewendet wird. Wenn Sie einen Schalter in einer Schleife haben und mit der nächsten Iteration in der äußeren Schleife fortfahren möchten, verwenden Sie continue 2.

Die folgenden zwei Beispiele verwenden zwei unterschiedliche Methoden, um dasselbe zu erreichen, eine mit einer Reihe von if-Anweisungen und die andere mit einer switch-Anweisung:

Beispiel #1 Switch-Struktur

<?php
if ($i == 0)
{
 echo "i equals 0";
}
elseif ($i == 1)
{
 echo "i equals 1";
}
elseif ($i == 2)
{
 echo "i equals 2";
}
switch ($i)
{
 case 0:
  echo "i equals 0";
  break;
 case 1:
  echo "i equals 1";
  break;
 case 2:
  echo "i equals 2";
  break;
}
?>
Nach dem Login kopieren

Beispiel #2 Die Switch-Struktur kann Zeichenfolgen verwenden

<?php
switch ($i)
{
 case "apple":
  echo "i is apple";
  break;
 case "bar":
  echo "i is bar";
  break;
 case "cake":
  echo "i is cake";
  break;
}
?>
Nach dem Login kopieren

Wichtiger Punkt: (Das habe ich noch nie verstanden!)

Um Fehler zu vermeiden, verstehen Sie, wie Switch funktioniert Werke Die Ausführung ist sehr wichtig. Die Switch-Anweisungen werden Zeile für Zeile (eigentlich Anweisung für Anweisung) ausgeführt. Zunächst wird kein Code ausgeführt. Nur wenn der Wert in einer Case-Anweisung mit dem Wert des Switch-Ausdrucks übereinstimmt, beginnt PHP mit der Ausführung der Anweisung bis zum Ende des Switch-Blocks (z. B. einer Return-Anweisung) oder bis die erste Break-Anweisung auftritt. Wenn Sie am Ende des Anweisungssegments des Falls kein break schreiben, führt PHP das Anweisungssegment im nächsten Fall weiter aus. Zum Beispiel:

<?php
switch ($i)
{
 case 0:
  echo "i equals 0";
 case 1:
  echo "i equals 1";
 case 2:
  echo "i equals 2";
}
?>
Nach dem Login kopieren

Besonderer Hinweis: Wenn $i gleich 3 ist, führt PHP keine Echo-Anweisung aus! Wenn $i jedoch gleich 0 ist, führt PHP alle Echo-Anweisungen aus! Wenn $i gleich 1 ist, führt PHP die nächsten beiden Echo-Anweisungen aus. Nur wenn $i gleich 2 ist, erhalten Sie das „erwartete“ Ergebnis – nur „i gleich 2“. Daher ist es wichtig, Break-Anweisungen nicht zu vergessen (auch wenn Sie in manchen Fällen bewusst darauf verzichten möchten).

[Effizienz] Die Bedingung in der switch-Anweisung wird nur einmal ausgewertet und zum Vergleich mit jeder case-Anweisung verwendet. Die Bedingung wird in der elseif-Anweisung erneut ausgewertet. Wenn die Bedingung komplexer ist als ein einfacher Vergleich oder sich viele Male in einer Schleife befindet, kann es schneller sein, eine Switch-Anweisung zu verwenden.

Anweisungen in einem Fall können auch leer sein, wodurch die Kontrolle lediglich auf die Anweisungen im nächsten Fall übertragen wird.

<?php
switch ($i)
{
 case 0:
 case 1:
 case 2:
  echo "i is less than 3 but not negative";
  break;
 case 3:
  echo "i is 3";
}
?>
Nach dem Login kopieren

Ein Sonderfall ist die Vorgabe. Es entspricht jedem Fall, der mit keinem anderen Fall übereinstimmt. Beispiel:

<?php
switch ($i)
{
 case 0:
  echo "i equals 0";
  break;
 case 1:
  echo "i equals 1";
  break;
 case 2:
  echo "i equals 2";
  break;
 default:
  echo "i is not equal to 0, 1 or 2";
}
?>
Nach dem Login kopieren

Case-Ausdruck kann jeder Ausdruck sein, der einen einfachen Typ ergibt, d. h. eine Ganzzahl oder Gleitkommazahl sowie eine Zeichenfolge. Arrays oder Objekte können nur verwendet werden, wenn sie auf einfache Typen dereferenziert werden.


[Praktisch] Schreiben Sie basierend auf den oben genannten Wissenspunkten eine Funktion wie diese: Berechnen Sie die Anzahl der Bytes, die tatsächlich durch den Kapazitätswert dargestellt werden

<?php
/**
 * 返回字节数
 *
 * @param string $val 如 400M
 */
function return_bytes($val = '')
{
 $val = trim($val);
 $last = strtolower($val{strlen($val)-1});
 switch ($last)
 {
  case 'g':
   $val *= 1024;
  case 'm':
   $val *= 1024;
  case 'k':
   $val *= 1024;
 }

 return $val;
}
$memorylimit = ini_get('memory_limit');
echo $memorylimit, '<br/>';
echo return_bytes($memorylimit);
Nach dem Login kopieren

Ausgabe:

400M
419430400
Nach dem Login kopieren

Besonderer Hinweis: Wenn $val = 400M, wird case 'm' getroffen und $val *= 1024; darunter ausgeführt, aber da es keine Break-Sprache gibt, bleibt case 'k' bestehen hit, und die darunter liegende $val *= 1024;-Anweisung entspricht der Ausführung von 400 * 1024 * 1024 insgesamt.

Ausführlichere Erläuterungen zur „fortgeschrittenen“ Verwendung der Switch-Beurteilungsanweisung von PHP finden Sie auf der chinesischen PHP-Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

CakePHP Datum und Uhrzeit

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

CakePHP-Projektkonfiguration

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

CakePHP-Datei hochladen

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

CakePHP-Routing

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

Besprechen Sie CakePHP

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP-Kurzanleitung

See all articles