Ste*_*oke 5 php switch-statement
考虑:
我有一个变量叫$field那不时可有(其中包括)值,如action,id和another_term.我想使用一个switch结构来筛选值:
switch ($field) {
case 'action':
// do something
break;
case 'id':
// do something
break;
case (strpos($field, '_term')):
// do something else
break;
}
Run Code Online (Sandbox Code Playgroud)
前两个案例有效.第三个没有.我认为这是对switch语句的错误使用.这是否更好地作为if/else序列处理?
Sve*_*sen 12
你可以使用这样的switch语句来做到这一点:
$field = 'bla bla_term bla';
switch (true) {
case $field === 'action':
echo 'action';
break;
case $field === 'id':
echo 'id';
break;
case strpos($field, '_term') >= 0:
echo '_term';
break;
}
Run Code Online (Sandbox Code Playgroud)
该switch语句只是将每个块中的表达式case与switch括号中的值进行比较.
表达式是可以减少为值的代码单位,例如2 + 3或strpos(...).在PHP中,大多数东西都是表达式
以下是上述示例的注释版本:
// We are going to compare each case against
// the 'true' value
switch (true) {
// This expression returns true if $field
// equals 'action'
case $field === 'action':
echo 'action';
break;
// This expression returns true if $field
// equals 'id'
case $field === 'id':
echo 'id';
break;
// This expression returns true if the
// return value of strpos is >= 0
case strpos($field, '_term') >= 0:
echo '_term';
break;
}
Run Code Online (Sandbox Code Playgroud)
如果你想使用strpos调用的返回值,那么你可以只分配它(赋值是PHP中的表达式):
case ($pos = strpos($field, '_term')) >= 0:
echo '_term at position ' . $pos;
break;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6097 次 |
| 最近记录: |