ホームページ  >  記事  >  バックエンド開発  >  PHPのswitch判定文の「高度な」使い方の詳細説明、switch_PHPチュートリアルの詳細説明

PHPのswitch判定文の「高度な」使い方の詳細説明、switch_PHPチュートリアルの詳細説明

WBOY
WBOYオリジナル
2016-07-13 10:17:491343ブラウズ

PHPのswitch判定文の「高度な」使い方を詳しく解説、switchについて詳しく解説

スイッチの基本的な使い方さえマスターしていないので「上級」とだけ呼んでいますが、これからお話しするのは基本的な使い方です!

switch ステートメントは、同じ式を持つ一連の IF ステートメントに似ています。同じ変数 (または式) をさまざまな値と比較し、どの値と等しいかに応じて異なるコードを実行する必要がある状況は数多くあります。これはまさに switch ステートメントの目的です。

注: 他の言語とは異なり、 continue ステートメントは switch に適用されると、break と同様に動作することに注意してください。ループ内にスイッチがあり、外側のループの次の反復に継続したい場合は、Continue 2 を使用します。

次の 2 つの例では、2 つの異なる方法を使用して同じことを実現します。1 つは一連の if ステートメントを使用し、もう 1 つは switch ステートメントを使用します。

例 #1 スイッチ構造

コードをコピーします コードは次のとおりです:
if ($i == 0)
{
echo "i = 0";
}
elseif ($i == 1)
{
echo "i = 1";
}
elseif ($i == 2)
{
echo "i = 2";
}

スイッチ($i)

{
ケース0:
echo "i = 0";
休憩;
ケース1:
echo "i = 1";
休憩;
ケース 2:
echo "i = 2";
休憩;
}
?>

例 #2 スイッチ構造では文字列を使用できます

コードをコピーします コードは次のとおりです:
スイッチ($i)
{
ケース「リンゴ」:
「私はリンゴです」をエコーし​​ます;
休憩;
ケース「バー」:
echo "私はバーです";
休憩;
ケース「ケーキ」:
エコー「私はケーキです」;
休憩;
}
?>

キーポイント:(これは私が今まで理解したことがないものです!)

エラーを回避するには、switch がどのように実行されるかを理解することが重要です。 switch ステートメントは 1 行ずつ (実際にはステートメントごとに) 実行されます。最初はコードは実行されません。 case ステートメントの値が switch 式の値と一致する場合にのみ、PHP は switch ブロックの終わり (return ステートメントなど)、または最初の Break ステートメントに遭遇するまでステートメントの実行を開始します。ケースのステートメントセグメントの最後にbreakを書かないと、PHPは次のケースでもステートメントセグメントを実行し続けます。例:


コードをコピーします コードは次のとおりです:
スイッチ($i)
{
ケース0:
echo "i = 0";
ケース1:
echo "i = 1";
ケース 2:
echo "i = 2";
}
?>

特記事項: $i が 3 に等しい場合、PHP は echo ステートメントを実行しません。ただし、$i が 0 に等しい場合、PHP はすべての echo ステートメントを実行します。 $i が 1 の場合、PHP は次の 2 つの echo ステートメントを実行します。 $i が 2 に等しい場合にのみ、「期待される」結果が得られます。つまり、「i が 2 に等しい」だけです。したがって、break ステートメントを忘れないことが重要です (場合によっては意図的にブレーク ステートメントの提供を避けたい場合でも)。

[効率] switch ステートメント内の条件は 1 回だけ評価され、各 case ステートメントとの比較に使用されます。条件は elseif ステートメントで再度評価されます。条件が単純な比較よりも複雑である場合、または何度もループする場合は、switch ステートメントを使用した方が高速な場合があります。

ケース内のステートメントを空にすることもできます。これは、制御を次のケースのステートメントに移すだけです。


コードをコピーします コードは次のとおりです:
スイッチ($i)
{
ケース0:
ケース1:
ケース 2:
echo "i は 3 未満ですが、負ではありません";
休憩;
ケース 3:
「私は 3 です」をエコーし​​ます;
}
?>

特別なケースがデフォルトです。他のどの大文字と小文字も一致しないあらゆる大文字と小文字が一致します。例:


コードをコピーします コードは次のとおりです:
スイッチ($i)
{
ケース0:
echo "i = 0";
休憩;
ケース1:
echo "i = 1";
休憩;
ケース 2:
echo "i = 2";
休憩;
デフォルト:
echo "i は 0、1、2 に等しくありません";
}
?>

case 式は、単純な型 (つまり、文字列だけでなく整数や浮動小数点数) に評価される任意の式にすることができます。配列またはオブジェクトは、単純型に逆参照されない限り使用できません。


[実践的な戦闘] 上記の知識ポイントに基づいて、次のような関数を作成します: 容量値が実際に表すバイト数を計算します

コードをコピーします コードは次のとおりです:

/**
* バイト数を返します
*
* @param 文字列 $val 400M
など ​*/
関数 return_bytes($val = '')
{
$val = トリム($val);
$last = strto lower($val{strlen($val)-1});
スイッチ ($last)
{
ケース「g」:
$val *= 1024;
ケース「m」:
$val *= 1024;
ケース「k」:
$val *= 1024;
}

$val を返します;
}

$memorylimit = ini_get('memory_limit');
echo $memorylimit, '
';
echo return_bytes($memorylimit);

出力:

コードをコピーします コードは次のとおりです:

400M
419430400

特記事項: $val = 400M の場合、case 'm' がヒットし、その下の $val *= 1024; が実行されますが、ブレーク言語がないため、case 'k' がヒットし続け、その下の $ val *= 1024; ステートメントは、通常、400 * 1024 * 1024 を実行するのと同じです。

PHPで判定値を送信するにはどうすればよいですか? switchループ文を使って判定を行っていますが、判定後の新しい値を再度新しいページに送信するにはどうすればよいですか

セッションを保存し、別のページでセッションを取り出します。
switch ($a) {
case "1" :
echo "A" ;
if(!isset($_SESSION)){
session_start();
}
$_SESSION['a']='A';
break;

別のページ:
if(!isset($_SESSION)){
session_start();
}
$a=$_SESSION['a'];

phpのswitch文は日数に基づいて判定されます

var iMonth=5;
var四半期=""
switch(iMonth){
ケース1:;
ケース2:;
ケース3:;
四半期="春日";
休憩;
ケース4:;
ケース5:;
ケース 6:;
四半期 = "xiaji";
休憩;
ケース 7:;
ケース 8:;
ケース 9:;
四半期 "qiiji";
休憩;
ケース 10:;
ケース11:;
ケース 12:;
四半期 = "ドンジ";
休憩;
}
document.write(四半期)

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/887750.html技術記事 PHP の switch 判定ステートメントの「高度な」使い方の詳細な説明 switch の最も基本的な使い方さえマスターしていないため、switch の詳細な説明は「高度な」使い方としか言いません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。