In PHP, how is variable scope handled in switch statements?
For instance, take this hypothetical example:
$someVariable = 0;
switch($something) {
case 1:
$someVariable = 1;
break;
case 2:
$someVariable = 2;
break;
}
echo $someVariable;
Would this print 0 or 1/2?
It will print 1 or 2 if you change the value of
$someVariable
in the switch statement, and 0 if you don't.It will print 1 or 2. Variables in PHP have the scope of the whole function.
PHP does only have a global and function/method scope. So
$someVariable
inside theswitch
block refers to the same variable as outside.But since
$something
is not defined (at least not in the code you provided), accessing it raises a Undefined variable notice, none of the cases match (undefined variables equalnull
),$someVariable
will stay unchanged and0
will be printed out.The variable will be the same in your whole portion of code : there is not variable scope "per block" in PHP.
So, if
$something
is1
or2
, so you enter in one of thecase
of theswitch
, your code would output 1 or 2.On the other hand, if
$something
is not1
nor2
(for instance, if it's considered as0
, which is the case with the code you posted, as it's not initialized to anything), you will not enter in any of thecase
block ; and the code will output0
.