Only so called "advanced" usage, because I have not even the most basic use of the switch is not mastered, so, the following is actually the basic use of it!
A switch statement is similar to a series of IF statements that have the same expression. There are many situations where you need to compare the same variable (or expression) with a number of different values and execute different code based on which value it equals. This is the purpose of the switch statement.
Note: Note that unlike other languages, a continue statement acts on a switch similar to a break. If you have a switch in the loop and want to continue the next cycle in the outer loop, use continue 2.
The following two examples use two different methods to achieve the same thing, one with a series of if statements and the other with a switch statement:
Example #1 Switch Structure
Copy Code code as follows:
<?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
}
?>
Example #2 switch structure can be used as a string
Copy Code code as follows:
<?php
Switch ($i)
{
Case "Apple":
echo "I is Apple";
Break
Case "Bar":
echo "I is bar";
Break
Case "Cake":
echo "I is cake";
Break
}
?>
Key point: (This is the place that I have not mastered before!) )
To avoid errors, it is important to understand how the switch is performed. The switch statement executes one line at a line (actually a statement-taking statement). No code is executed at the beginning. PHP begins executing a statement only if the value in one case statement matches the value of the switch expression until the end of the switch's program segment (such as a return statement) or when the first break statement is encountered. If you do not write a break at the end of the statement section of the case, PHP will continue to execute the statement section in the next box. For example:
Copy Code code as follows:
<?php
Switch ($i)
{
Case 0:
echo "I equals 0";
Case 1:
echo "I equals 1";
Case 2:
echo "I equals 2";
}
?>
Special Note: here if $i equals 3,php will not execute any ECHO statement! However, if $i equals 0,php will execute all the echo statements! If $i equals 1,php, the following two echo statements are executed. Only when the $i equals 2 o'clock will the result of "expected" be given--only "I equals 2" is displayed. So, don't forget that break statements are important (even if you deliberately avoid providing them in some cases).
[Efficiency] The condition in the switch statement is only one time and is used to compare with each case statement. The condition is evaluated again in the ElseIf statement. If the condition is more complex than a simple comparison or in a loop of many times, it may be quicker to use a switch statement.
The statement in a case can also be empty, which simply transfers control to the statement in the next box.
Copy Code code as follows:
<?php
Switch ($i)
{
Case 0:
Case 1:
Case 2:
echo "I am less than 3 but not negative";
Break
Case 3:
echo "I is 3";
}
?>
The exception to a case is default. It matches anything that does not match any other case. For example:
Copy Code code as follows:
<?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 am not equal to 0, 1 or 2";
}
?>
A case expression can be any expression that is evaluated as a simple type, that is, an integer or floating-point number, and a string. You cannot use arrays or objects unless they are dereference as simple types.
"Combat" according to the above knowledge point, write such a function: Calculate the capacity value actually represents the number of bytes
Copy Code code as follows:
<?php
/**
* Returns the number of bytes
*
* @param string $val such as 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);
Output:
Copy Code code as follows:
Special Note: $val = 400M, case ' m ' was hit, under the $val *= 1024; is executed, but because there is no break language, it continues to hit case ' K ' and executes its $val *= 1024; The statement, so, is generally equivalent to executing 400 * 1024 * 1024.