我正在检查大约20个变量,如下所示,我想知道是否有更快的方法(更少的行)来进行相同的操作:
fixed
答案 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;
}, []);