我有以下开关声明:
$html = '<div class="'. $some_value . '">';
switch ($some_value) {
case "one":
return $html . 'One Biscuit</div>';
break;
case "two":
return $html . 'Two Chimps</div>';
break;
case "three":
return $html . 'Three Pies</div>';
break;
default:
return $html . 'Meh...</div>';
}
注意到我如何在每个案例中添加$html
变量?不好......是否可以将它只添加一次到switch语句的最终值?我正在尝试将最终值包装在动态HTML中。
答案 0 :(得分:2)
一种方法:
$html = '<div class="'. $some_value . '">';
$v = 'Meh...</div>';
switch ($some_value) {
case "one":
$v = 'One Biscuit</div>';
break;
case "two":
$v = 'Two Chimps</div>';
break;
case "three":
$v = 'Three Pies</div>';
break;
}
$html .= $v;
由于您使用的是return
,因此您最终可以返回一次:
return $html.$v
此外,您可以将参数定义为默认值,如下所示:
function someFunction(DUNNO_YOUR_PARAMS, $v = 'Meh...'){
$v .= '</div'>;
// rest of code
答案 1 :(得分:2)
将字符串存储在新变量中。此外,您不需要在之后返回声明。
$html = '<div class="'. $some_value . '">';
$str = null;
switch ($some_value) {
case "one":
$str = 'One Biscuit</div>';
break;
case "two":
$str = 'Two Chimps</div>';
break;
case "three":
$str = 'Three Pies</div>';
break;
default:
$str = 'Meh...</div>';
break;
}
return $html.$str;
答案 2 :(得分:2)
这个怎么样:
switch($some_value){
case 'one':
$var="One Biscuit";
break;
case 'two':
$var="Two Chimps";
break;
case 'three':
$var="Three Pies";
break;
default:
$var="Meh...";
break;
}
$html="<div class=".$some_value.">".$var."</div>";
答案 3 :(得分:2)
其他方法是在数组中保存数据:
$some_value = 'two';
//
$data = array(//this data could be stored in a database table
'one' => 'One Biscuit',
'two' => 'Two Chimps',
'three'=> 'Three Pies',
'default' => 'Meh...'
);
$html = '<div class="'.$some_value.'">'.(isset($data[$some_value])?$data[$some_value]:$data['default']).'</div>';
var_dump($html);
结果:
string '<div class="two">Two Chimps</div>' (length=33)
在某些情况下,数组比switch更快:In PHP what's faster, big Switch statement, or Array key lookup
答案 4 :(得分:0)
如果您的HTML更长,可能更容易维护的另一种解决方案:
<?php
ob_start();
echo '<div class="'.$some_var.'">';
/*
Be sure the file exists in the location you want
You can change items to the name of any directory you want just be
sure the file exists in the end. In the case of linux be sure the file
is the exact same name...
*/
include('items/'.$some_var.'.php');
echo '</div>';
$output = ob_get_clean();
return $output;
?>
在您的文件中,您只需输入所需的HTML代码 示例three.php(除非您处理某些内容,否则它实际上只是html或纯文本:
Three pies
如果你有太多这么简单的文件,这可能会被重构。但是如果它更复杂,你可以包含更多东西。