-1

我有一行相当简单的比较代码,它可以工作,但我想知道是否有更快/更有效的编写方式。

if($RES > 0 AND $MarkerL1 != 'RES' AND $MarkerL2 != 'RES' AND $MarkerL3 != 'RES' AND $MarkerL4 != 'RES' AND $MarkerL5 != 'RES' AND $MarkerL6 != 'RES' AND $MarkerL7 != 'RES' AND $MarkerL8 != 'RES'){$PosNumL9 = 8; $NextPosL9 = $RES; $MarkerL9 = 'RES';}

谢谢

4

3 回答 3

1

你试试这个代码:

$RES > 0  AND !in_array('RES',[$MarkerL1, $MarkerL2, $MarkerL3, $MarkerL4, $MarkerL5, $MarkerL6, $MarkerL7, $MarkerL8]) 
于 2018-09-05T15:07:28.960 回答
0

你可以这样做:

    $markers = [$MarkerL1,$MarkerL2,$MarkerL3,$MarkerL4,$MarkerL5,$MarkerL6,$MarkerL7,$MarkerL8,$MarkerL9];

if($RES > 0 AND !in_array('RES',$markers))
{
$PosNumL9 = 8; $NextPosL9 = $RES; $MarkerL9 = 'RES';
}

希望对你有好处..

于 2018-09-05T15:08:02.033 回答
0

正如一些答案已经强调的那样,您可以使用:

!in_array('RES',[$MarkerL1, $MarkerL2, $MarkerL3, $MarkerL4, $MarkerL5, $MarkerL6, $MarkerL7, $MarkerL8] 

作为快捷方式

$MarkerL1 != 'RES' AND $MarkerL2 != 'RES' AND $MarkerL3 != 'RES' AND $MarkerL4 != 'RES' AND $MarkerL5 != 'RES' AND $MarkerL6 != 'RES' AND $MarkerL7 != 'RES' AND $MarkerL8 != 'RES'

它工作正常...

您还可以将完整代码更改为:

for($i=1,$false=true;$i<9;$i++){
    if(${"MarkerL$i"}==='RES'){
        $false=false;
        break;
    }
}
($RES>0 && $false)? $PosNumL9 = 8 && $NextPosL9 = $RES && $MarkerL9 = 'RES':null;

它也很好用

于 2018-09-05T19:05:30.520 回答