我想要压缩以下if语句(除了最后一个会有更长的值,更多的值)。
if ($row['titleId'] == '123' || $row['titleId'] == '456' || $row[){
我认为它最终会像:
if ($row['titleId'] == ('123'||'456'){}
或者我会这样做更好:
$array = ('123','456')
if (in_array($row['titleId'], $array){}
答案 0 :(得分:3)
您可以使用switch
:
switch ($row['titleId']) {
case '123': case '456': case '789': case '314': case '271':
doSomething();
}
我可能仍然希望将每个case
放在一个单独的行上,但是,如果您的目标是减少"身高"您的代码,您可以按上述方式执行。
在缩短评论中的代码方面,显然看起来像这样:
switch($row['titleId']){
case '8216': case '8678': case '8705': case '8216': case '8707':
$rows[$row['titleId']]=array();
break;
case '8214':
$rows['8216'][]=$row['titleId'];
break;
case '8791':
$rows['8678'][]=$row['titleId'];
break;
case '8643':
$rows['8705'][]=$row['titleId'];
break;
case '8666':
$rows['8707'][]=$row['titleId'];
break;
}
您可以选择以下内容:
$xlat = array('8214'=>'8216', '8791'=>'8678', '8643'=>'8705', '8666'=>'8707');
switch($row['titleId']){
case '8216': case '8678': case '8705': case '8216': case '8707':
$rows[$row['titleId']]=array(); break;
default:
if (array_key_exists($row['titleId'],$xlat)) {
$rows[$xlat[$row['titleId']]][]=$row['titleId'];
}
}
这通过将它们置于关联数组的控制之下来压缩常见情况。基本上,如果标题ID 在数组中作为键,则其查找值将用于影响正确的$rows
条目。