switch ステートメントは、同じ 式 を含む一連の IF ステートメントに似ています。同じ変数 (または式) をさまざまな値と比較し、どの値と等しいかに応じて異なるコードを実行する必要がある状況は数多くあります。これはまさに switch ステートメントの目的です。
注: 他の言語とは異なり、Continue ステートメントは switch に適用される場合は Break に似ていることに注意してください。ループ内にスイッチがあり、外側のループの次の反復に継続したい場合は、次を使用します。 2を続ける。
次の 2 つの例では、2 つの異なる方法を使用して同じことを実現しています。1 つは一連の if ステートメントを使用し、もう 1 つは switch ステートメントを使用しています。
<?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; } ?>
キーポイント: (これは私が今まで理解できなかったことです!)
間違いを避けるために、switch がどのように実行されるかを理解することが非常に重要です。 switch ステートメントは 1 行ずつ (実際にはステートメントごとに) 実行されます。最初はコードは実行されません。 case ステートメントの値が switch 式の値と一致する場合のみ
PHP は、switch プログラム セグメント (return ステートメントなど) が終了するか、最初の Break ステートメントに到達するまで、ステートメントの実行を開始しません。ケースのステートメントセクションの最後にbreakが書かれていない場合、PHPは
次のケースのステートメントセグメントの実行が続行されます。例: <?php
switch ($i)
{
case "apple":
echo "i is apple";
break;
case "bar":
echo "i is bar";
break;
case "cake":
echo "i is cake";
break;
}
?>
<?php switch ($i) { case 0: echo "i equals 0"; case 1: echo "i equals 1"; case 2: echo "i equals 2"; } ?>
<?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"; } ?>
【
実戦
】 上記の知識ポイントに基づいて、次のような関数を作成します: 容量値によって実際に表されるバイト数を計算します
<?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"; } ?>
<?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);
以上がPHP:switch caseとif elseの使い方の違いと動作効率を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。