如果可能的话,我想把所有这些“if”条件用一个大开关。 这里是我的功能:
function checkModel($model){
$model_value = 'Default Model';
if (strpos($model,'TMP') !== false) {
$model_value = 'TMP - Default';
}
if (strpos($model,'TMT') !== false) {
$model_value = 'TMT - Default';
}
if (strpos($model,'TMS') !== false) {
$model_value = 'TMS - Default';
}
if (strpos($model,'IcomSpeed') !== false) {
$model_value = 'IcomSpeed - Default';
}
if (strpos($model,'TMSSA') !== false) {
$model_value = 'TMSSA - Default';
}
if (strpos($model,'IcomsDisplay') !== false) {
$model_value = 'IcomsDisplay - Default';
}
if (strpos($model,'ITV') !== false) {
$model_value = 'ITV - Default';
}
if (strpos($model,'Terminal') !== false) {
$model_value = 'Terminal - Default';
}
if (strpos($model,'IcomsTexto') !== false) {
$model_value = 'IcomsTexto - Default';
}
if (strpos($model,'PIV') !== false) {
$model_value = 'PIV - Default';
}
if (strpos($model,'TM150') !== false) {
$model_value = 'TM150 - Default';
}
if (strpos($model,'TM60') !== false) {
$model_value = 'TM60 - Default';
}
return ($model_value);
};
我真的不知道我怎么能这样做:/那就是为什么我要问你们^^
为什么我要这样:
带有一个开关的Bcz我可以直接用“break”退出,有了这个版本,程序会检查每个“if”条件,我认为-_-?现在,如果您告诉我“if”版本比“switch”版本更快,那么请保留:p
答案 0 :(得分:1)
switch
不支持每个case
语句中的复杂操作,因为传统上{{1} }语句被编译成哈希表,只允许立即比较,不允许中间操作。 PHP不是以这种方式编译的,但关于switch
的语法规则仍然存在。
...简而言之,在这种情况下你不能使用switch
,但是你可以通过将代码转换为使用关联数组然后迭代它来简化代码。
switch
答案 1 :(得分:1)
您无法在此使用switch
。
你能做的是:是:
if (strpos($model,'TMP') !== false) {
return 'TMP - Default';
}
一旦满足条件,这将使其停止。
答案 2 :(得分:1)
如果您想了解开关的工作原理,请阅读this
但是看起来你只想稍微清理一下你的功能。虽然我不是专家,但我会这样做:
function checkModel( $model ) {
$strings = array( 'TMP' , 'TMT' , 'TMS' , 'IcomSpeed' , 'TMSSA' , 'IcomsDisplay' , 'ITV' , 'Terminal' , 'IcomsTexto' , 'PIV' , 'TM150' , 'TM60');
foreach( $strings as $s )
if( strpos( $model , $s ) !== FALSE )
return $s . " - Default";
return "Default Model";
}
我没有尝试过运行此代码。