-1

複数の場所でフォントファミリーを選択するようにスイッチを設定しています。たとえば forbodyと for paragraph。どちらにも独自の選択ドロップダウンがありますが、同じフォント ファミリーがあります。本体は arial、tahoma、verdana などの段落よりも同じファミリーを持っていることを意味します。

そのため、本文には switch-case を設定して正常に動作しますが、今では段落に同じフォント ファミリを使用したいと考えています。では、2 つの異なる変数に対して同じスイッチ ケースを使用するにはどうすればよいでしょうか。

$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;
}
4

3 に答える 3

3

コードを関数で囲むだけです。

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);
于 2013-05-16T17:45:45.027 に答える
2

より良いアプローチは、マップを作成することです。

$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"];
于 2013-05-16T17:48:21.267 に答える
1

可変変数でループを使用できます。

$elements = array($body, $para);

foreach($elements as $element) {
    switch ($element) {
        case 'Arial':
            ${$element .'_fonts'} = 'Arial, Helvetica, sans-serif';
            break;

        #other case statements here
    }
}

ただし、これが非常に良いアプローチであるかどうかはわかりません。コードをより多くの関数にリファクタリングしたい場合があります。

于 2013-05-16T17:45:14.387 に答える