我想根据两个变量的内容返回一个值。 让我解释一下,我有三个变量:
$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的值完全不同,在这种情况下不需要连接。
感谢。
答案 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