156 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Switch
 | |
| ---
 | |
| ## Switch
 | |
| In PHP, the `Switch` statement is very similar to the Javascript `Switch` statement (See the <a href="/javascript/switch-statements">Javascript Switch Guide</a> to compare and contrast). It allows rapid case testing with a lot of different possible conditions, the code is also more readable.
 | |
| 
 | |
| ### Syntax
 | |
| ```php
 | |
| <?php
 | |
| 	// Switch Statement Example
 | |
| 	switch ($i) {
 | |
|     	case "free":
 | |
|     	    echo "i is free";
 | |
|     	    break;
 | |
|     	case "code":
 | |
|     	    echo "i is code";
 | |
|     	    break;
 | |
|     	case "camp":
 | |
|     	    echo "i is camp";
 | |
|     	    break;
 | |
|     	default:
 | |
|     	    echo "i is freecodecamp";
 | |
|             break;
 | |
| 	}
 | |
| 
 | |
| ```
 | |
| 
 | |
| ### Break
 | |
| The `break;` statement exits the switch and goes on to run the rest of the application's code. If you do not use the `break;` statement you may end up running mulitple cases and statements, sometimes this may be desired in which case you should not include the `break;` statement.
 | |
| 
 | |
| An example of this behavior can be seen below:
 | |
| 
 | |
| ```
 | |
| <?php
 | |
|     $j = 0;
 | |
| 
 | |
|     switch ($i) {
 | |
|         case '2':
 | |
|             $j++;
 | |
|         case '1':
 | |
|             $j++;
 | |
|             break;
 | |
|         default:
 | |
|             break;
 | |
|     }
 | |
| ```
 | |
| 
 | |
| If $i = 1, the value of $j would be:
 | |
| 
 | |
| ```
 | |
| 1
 | |
| ```
 | |
| 
 | |
| If $i = 2, the value of $j would be:
 | |
| 
 | |
| ```
 | |
| 2
 | |
| ```
 | |
| 
 | |
| While break can be omitted without causing fall-through in some instances (see below), it is generally best practice to include it for legibility and safety (see below):
 | |
| 
 | |
| ```
 | |
| <?php
 | |
|     switch ($i) {
 | |
|         case '1':
 | |
|             return 1;
 | |
|         case '2':
 | |
|             return 2;
 | |
|         default:
 | |
|             break;
 | |
|      }
 | |
| ```
 | |
| ```
 | |
| <?php
 | |
|     switch ($i) {
 | |
|         case '1':
 | |
|             return 1;
 | |
|             break;
 | |
|         case '2':
 | |
|             return 2;
 | |
|             break;
 | |
|         default:
 | |
|             break;
 | |
|      }
 | |
| ```
 | |
| 
 | |
| ## Example
 | |
| ```php
 | |
| 
 | |
| <?php
 | |
| //initialize with a random integer within range
 | |
| $diceNumber = mt_rand(1, 6);
 | |
| 
 | |
| //initialize
 | |
| $numText = "";
 | |
| 
 | |
| //calling switch statement
 | |
|   switch($diceNumber) 
 | |
|   {
 | |
|   case 1:
 | |
|     $numText = "One";
 | |
|     break;
 | |
|   case 2:
 | |
|     $numText = "Two";
 | |
|     break;
 | |
|   case 3:
 | |
|   case 4:
 | |
|     // case 3 and 4 will go to this line
 | |
|     $numText = "Three or Four";
 | |
|     break;
 | |
|   case 5:
 | |
|     $numText = "Five";
 | |
|     echo $numText;
 | |
|     // break; //without specify break or return it will continue execute to next case.
 | |
|   case 6:
 | |
|     $numText = "Six";
 | |
|     echo $numText;
 | |
|     break;
 | |
|   default:
 | |
|     $numText = "unknown";
 | |
|   }
 | |
|   
 | |
|   //display result
 | |
|   echo 'Dice show number '.$numText.'.';
 | |
| 
 | |
| ?>
 | |
| 
 | |
| ```
 | |
| 
 | |
| ## Output
 | |
| ```
 | |
| if case is 1
 | |
| > Dice show number One.
 | |
| 
 | |
| if case is 2
 | |
| > Dice show number Two.
 | |
| 
 | |
| if case is 3
 | |
| > Dice show number Three or Four.
 | |
| 
 | |
| if case is 4
 | |
| > Dice show number Three or Four.
 | |
| 
 | |
| if case is 5
 | |
| > FiveSixDice show number Six.
 | |
| 
 | |
| if case is 6
 | |
| > SixDice show number Six.
 | |
| 
 | |
| if none of the above
 | |
| > Dice show number unknown.
 | |
| ```
 | |
| 
 | |
| #### More Information:
 | |
| * [php.net docs Switch](https://secure.php.net/manual/en/control-structures.switch.php")
 |