根据两个变量返回一个值


Return a value according to two variable

我想根据两个变量的内容返回一个值。让我解释一下,我有三个变量:

$var1 = 2; // This variable can change from 1 to 10 (based on the value in the database)
$var2 = 1; // This variable can have two values: 0 and 1 (based on the value in the database)
$result = ''; // This variable have a value based on the content of the two variables

我从数据库的两个不同列($var1和$var2)中获取两个值,并且我有$result,一个基于$var1和$var2内容的值的变量

这很容易做到,创建20个条件,像这样:

if ($var1 == 1 && $var == 0) $result = 'good morning';
if ($var1 == 1 && $var == 1) $result = 'hello';
if ($var1 == 2 && $var == 0) $result = 'never';

但是我的问题是:有没有一种方法可以让这段代码写得更容易,更容易阅读,更易于管理?

PS: $result有完全不同的值,在这种情况下不需要连接。

谢谢。

我认为这可能是你的代码更易于管理的版本:

switch([$var1,$var2]) {
    case [0,0]:
        // code
        break;
    case [0,1]:
        // code
        break;
    // ...
    default:
        // pairing wasn't defined
}

不知道$var1$var2的确切性质,也不知道$result的意义,我真的不能帮助更多,但这应该是一个好的开始。

其他答案都很好,我只是想添加另一种可能性:

将您的result的值存储到一个数组中,并像这样调用/搜索它:

$data[1][0] = 'good morning';
$data[1][1] = 'hello';
$data[2][0] = 'never';
//$data[x][y] = 'result of $var1=x and $var2=y';
// if exists a combination
if (isset($data[$var1][$var2])) {
    // get the value
    $result = $data[$var1][$var2];
}
$result = 'value' . $var1 . '.' . $var2;

嗯,有很多方法!

在这段代码之后,您可以构建字符串:
$result = "$var1" . "." . "$var2";

使用"value-to-string"效果

也可以返回一个数组:

$result = array("var1" => $var1, "var2" => $var2);

并使用$res["var1"/"var2"]访问每个部件

不确定连接这是否是您正在寻找的。如果不是,那么switch()可能是可行的方法:

<?php
switch(true){
    case ($var1 == 1 && $var == 0):
        $result = 'value1.0';
        break; 
    case ($var1 == 1 && $var == 1):
        $result = 'value1.1';
        break;
    case ($var1 == 2 && $var == 0):
        $result = 'value2.0'
        break;
    default:
        $result = 'value0.0';
}
?>

另一个选项,在你的编辑之后,将创建一个矩阵:

$m = array();
$m[1] = array(0 => 'good morning', 1 => 'hello');
$m[2] = array(0 => 'never');
$result = isset($m[$var1][$var2])?$m[$var1][$var2]:""; // Or false if you prefer