多行if语句

时间:2019-06-04 10:21:54

标签: php if-statement

我正在检查大约20个变量,如下所示,我想知道是否有更快的方法(更少的行)来进行相同的操作:

fixed

3 个答案:

答案 0 :(得分:4)

有几种方法:

1)foreach循环:

$array = [$data1, $data2, $data3];

foreach ($array as $key => $value)
{
    ${'res'. $key} = ($value == 1 ? 'yes' : 'no');
}

尽管正如Qirel指出的那样,这可能不是最好的选择。如果您需要命名新值$name. $x,那么最好使用数组:

$array = [$data1, $data2, $data3];
$res = [];

foreach ($array as $key => $value)
{
    $res[$key] = ($value == 1 ? 'yes' : 'no');
}

2)功能:

function checkVal($value)
{
    return ($value == 1 ? 'yes' : 'no');
}

$res1 = checkVal($data1);

3)三元-不一定重复代码,但更短:

$res1 = ($data1 == 1 ? 'yes' : 'no')
$res2 = ($data2 == 1 ? 'yes' : 'no')
$res3 = ($data3 == 1 ? 'yes' : 'no')

答案 1 :(得分:1)

这也应该起作用-

// number of variables to check
$num = 3;
// Loop for checking all the variables as per naming convnetions followed
for ($i = 1; $i <= $num; $i++) {
    // set yes/no depending on the data set
    ${'res' . $i} = ${'data' . $i} == 1 ? 'yes' : 'no';
}

答案 2 :(得分:0)

我不知道上下文,但是从我的见解中我的建议是创建一个$ data1,$ data2,$ dataN数组并循环所有这些值以创建带有所有检查的另一个数组

$values = [$data1, $data2, $data3, $data4];
$responses = array_reduce($values, function ($a, $b) {
    $a[] = 1 === $b;

    return $a;
}, []);