为具有多个价值可能性的变量分配一个值

时间:2012-08-22 20:01:05

标签: php variables if-statement switch-statement

在某些情况下,我遇到过这种情况,我只需要询问是否有更好的东西。我有一个值可以通过派克分配给它的数字。数字意味着什么,所以将其输出给用户。例如,我需要将1更改为对用户来说意味着什么的东西。这是一个代码示例:

switch($data['priority']) {
case 1:
    $priority = 'Low';
    break;
case 2:
    $priority = 'Medium';
    break;
case 3:
    $priority = 'High';
    break;
default:
    $priority = 'None';
    break;
}

有没有办法用较少的代码将值分配给优先级?我知道在JavaScript中你可以做多个三元运算符(var data = type == 1 ? 'Good' : type == 2 ? 'Bad' : type == 3 ? 'Unknown' : '';),但PHP不允许这样做。我知道你也可以做多个if,否则if,else if,else语句,但这看起来好像是很多额外的代码。有没有更好的方法来做我要问的事情?

2 个答案:

答案 0 :(得分:6)

一种可能性是使用数组作为map:

$map = array(1 => 'Low', 2 => 'Mid', ...);
$prioName = isset($map[$prio]) ? $map[$prio] : 'None';

答案 1 :(得分:2)

尝试一个数组映射:

$priorities = array('None', 'Low', 'Medium', 'High');

// you can use an easy "if"
if ($data['priority'] < 1 || $data['priority'] > 3)
    $data['priority'] = 0;

// or you can use a ternary assignment:
$data['priority'] = $data['priority'] < 1 || $data['priority'] > 3 ? 0 : $data['priority'];

$priority = $priorities[$data['priority']];