根据两个变量

时间:2015-10-13 19:52:49

标签: php variables

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

$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的值完全不同,在这种情况下不需要连接。

感谢。

5 个答案:

答案 0 :(得分:6)

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

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

在不知道$var1$var2的确切性质以及$result的重要性的情况下,我无法提供更多帮助,但这应该是一个良好的开端。< / p>

答案 1 :(得分:3)

$result = 'value' . $var1 . '.' . $var2;

答案 2 :(得分:3)

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

将您的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];
}

答案 3 :(得分:0)

嗯,很多方法!

按照您的代码片段,您可以构建字符串:

$result = "$var1" . "." . "$var2";

使用&#34; value-to-string&#34;效果。

您还可以返回一个数组:

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

并使用$ res访问每个部分[&#34; var1&#34; /&#34; var2&#34;]。

答案 4 :(得分:0)

不确定这是否是您正在寻找的东西。如果不是,则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