簡體   English   中英

PHP:從多個變量切換檢查相同的值

[英]PHP: Switch check same value from multiple variables

我將“開關”設置為選擇多個地方的字體系列。 例如bodyparagraph 兩者都有自己的選擇下拉列表,但字體家族相同。 指身體為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM