[英]PHP: Switch check same value from multiple variables
我將“開關”設置為選擇多個地方的字體系列。 例如body
和paragraph
。 兩者都有自己的選擇下拉列表,但字體家族相同。 指身體為arial,tahoma,verdana,比段也有相同的家族。
因此,對於正文,我設置了開關大小寫並且可以正常工作,但是現在我想對段落使用相同的字體系列。 那么,如何對兩個不同的變量使用相同的開關大小寫呢?
$body = get_opt('body_fonts');
$para = get_opt('para_fonts');
switch ($body) {
case 'Arial':
$body_fonts = 'Arial, Helvetica, sans-serif';
break;
case 'Lucida':
$body_fonts = '"Lucida Sans Unicode", "Lucida Grande", sans-serif';
break;
case 'Roboto':
$body_fonts = '"Roboto", sans-serif;';
break;
case 'Tahoma':
$body_fonts = 'Tahoma, Geneva, sans-serif';
break;
case 'Verdana':
$body_fonts = 'Verdana, Geneva, sans-serif';
break;
default:
$body_fonts = 'Arial, Helvetica, sans-serif';
break;
}
您只需要將代碼封裝在一個函數中:
function getfont($what) {
switch ($what) {
case 'Arial':
$fonts = 'Arial, Helvetica, sans-serif';
break;
case 'Lucida':
$fonts = '"Lucida Sans Unicode", "Lucida Grande", sans-serif';
break;
case 'Roboto':
$fonts = '"Roboto", sans-serif;';
break;
case 'Tahoma':
$fonts = 'Tahoma, Geneva, sans-serif';
break;
case 'Verdana':
$fonts = 'Verdana, Geneva, sans-serif';
break;
default:
$fonts = 'Arial, Helvetica, sans-serif';
break;
}
return $fonts;
}
$body_fonts = getfont($body);
$para_fonts = getfont($para);
更好的方法可能是制作地圖。
$fontMap = array(
'Arial'=>'Arial, Helvetica, sans-serif',
'Lucida'=>'"Lucida Sans Unicode", "Lucida Grande", sans-serif',
'Roboto'=> '"Roboto", sans-serif',
'Tahoma'=>'Tahoma, Geneva, sans-serif',
'Verdana'=>'Verdana, Geneva, sans-serif',
'default'=>'Arial, Helvetica, sans-serif'
);
然后你可以做這樣的事情
$bodyFonts = array_key_exists($body, $fontMap)?$fontMap[$body]:$fontMap["default"];
$paraFonts = array_key_exists($para, $fontMap)?$fontMap[$para]:$fontMap["default"];
您可以使用帶有變量變量的循環:
$elements = array($body, $para);
foreach($elements as $element) {
switch ($element) {
case 'Arial':
${$element .'_fonts'} = 'Arial, Helvetica, sans-serif';
break;
#other case statements here
}
}
不過,我不確定這是否是一個很好的方法。 您可能需要將代碼重構為更多功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.