PHP优化变量映射

PHP优化变量映射,php,optimization,mapping,Php,Optimization,Mapping,使用参数$action调用我的PHP中的函数。此值可以是“开”或“关”。我需要的是将该值分别“映射”到1或0 这可以通过以下方式实现: if ($action === "on") { $value = 1; else if ($action === "off") { $value = 0; } 但这看起来不太好,我认为它可以优化。我希望看到一些函数执行这种行为,比如: $value = varmap(array("on", "off"), array(1, 0), $actio

使用参数
$action
调用我的PHP中的函数。此值可以是
“开”
“关”
。我需要的是将该值分别“映射”到
1
0

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

if ($action === "on") {
    $value = 1;
else if ($action === "off") {
    $value = 0;
}
但这看起来不太好,我认为它可以优化。我希望看到一些函数执行这种行为,比如:

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

不幸的是,我还没有找到一个像这样工作的函数,但也许有人知道它。非常感谢您的建议。

您的状态可能会比关闭和打开的状态更多吗

如果没有,我的建议是这样做

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

有没有可能你会有比开关更多的状态

如果没有,我的建议是这样做

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

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

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

如果要将其展开以使用更多值,则可以尝试以下操作:

$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

如果要将其展开以使用更多值,则可以尝试以下操作:

$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

在这里,我为您编写了实际函数,有时也可能对我有用:

<?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

在这里,我为您编写了实际函数,有时也可能对我有用:

<?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

您可以轻松地选择三元运算符
$value=($action=='on')?'1' : '0';我完全忘记了使用它。谢谢如果您将其作为答案发布,我可以接受:)如果您希望结果是数字,请使用
$value=($action='on')?1 : 0;谢谢大家,我使用了@ravenanigam的建议并将其改为数值。您可以轻松地选择三元运算符
$value=($action='on')?'1' : '0';我完全忘记了使用它。谢谢如果您将其作为答案发布,我可以接受:)如果您希望结果是数字,请使用
$value=($action='on')?1 : 0;谢谢大家,我使用了@ravenanigam的建议并将其改为数字。谢谢,其他答案解决了我的特定问题,但这最好地回答了我的问题!谢谢,其他答案解决了我的特殊问题,但这最好地回答了我的问题!