使用单个变量的多个'或'语句的简单方法

时间:2015-04-17 05:22:23

标签: php arrays

我想要压缩以下if语句(除了最后一个会有更长的值,更多的值)。

if ($row['titleId'] == '123' || $row['titleId'] == '456' || $row[){

我认为它最终会像:

if ($row['titleId'] == ('123'||'456'){}

或者我会这样做更好:

$array = ('123','456')
if (in_array($row['titleId'], $array){}

1 个答案:

答案 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条目。