PHP优化变量映射

时间:2015-10-29 10:06:31

标签: php optimization mapping

使用参数$action调用PHP中的函数。该值可以是"on""off"。我需要的是将此值“映射”到10

这可以通过以下方式实现:

if ($action === "on") {
    $value = 1;
else if ($action === "off") {
    $value = 0;
}

但这看起来不太好,我认为它可以优化。我想看到一些执行此行为的函数:

$value = varmap(array("on", "off"), array(1, 0), $action);

不幸的是,我无法找到一个像这样的功能,但也许有人确实知道它。任何建议都表示赞赏。

4 个答案:

答案 0 :(得分:3)

我在这里为你写了实际的功能,对我来说有时候也很有用:

<?php

function varmap($values, $outputValues, $input) {
    if(count($values) != count($outputValues)){
        return "Not the same count";    
    }

    foreach($values as $idx => $value) {
        if($value == $input){
            return $outputValues[$idx]; 
        }
    }
}

$action = "on";
$value = varmap(array("on", "off"), array(1, 0), $action);

echo $value; //Returns 1

答案 1 :(得分:1)

你可能会有更多的状态而不是关闭和开启状态吗?

如果不是我的建议是

$value = ($action == 'on') ? 1 : 0;

答案 2 :(得分:1)

试试这个:

$value = ($action == 'on') ? '1' : '0';

答案 3 :(得分:1)

如果您想将其展开以使用更多值,那么您可以尝试:

$data = array(
    'on'=>1,
    'off'=>2,
    'medium'=>3,
);

$to_check = 'on';
$my_var = '';

foreach($data as $key => $value) {
    if ($key === $to_check) {
        $my_var = $value;
        break;
    }
}

echo $my_var;

结果:

1