如果语句聪明,任何方式缩短方式?

时间:2011-05-31 11:02:59

标签: php if-statement smarty

是否可以缩短我的陈述,例如:

{if $name eq 'Fred' or 'Monalisa' or 'Simon'}
    Welcome Sir.
{/if}

如果是这样,怎么看?

2 个答案:

答案 0 :(得分:1)

@Gaurav的答案很接近,但语法并不聪明。这应该有效:

{if in_array($name, array('Fred', 'Monalisa', 'Simon')}
    Welcome Sir.
{/if}

另一方面,我不认为有人将Monalisa称为“先生”。 :)

答案 1 :(得分:0)

您也可以在PHP中执行此逻辑:

<?php

// where $feminine_names is array of names, ex, array('Mary', 'Sue')
$welcome_title = in_array($name, $feminine_names) ? 'Madame' : 'Sir';

// if name is still needed in your template
$smarty->assign('name', $name);
$smarty->assign('welcome_title', $welcome_title);

?>


{*template file*}
Welcome {$welcome_title}.

或使用自定义modifier

加倍努力
<?php

function welcome_title($name){
    // where $feminine_names is array of names, ex, array('Mary', 'Sue')
    return in_array($name, $feminine_names) ? 'Madame' : 'Sir';
}

$smarty->register_modifier('welcome_title', 'welcome_title');
$smarty->assign($name);

?>


{*template file*}
Welcome {$name|welcome_title}.