编写“如果值等于此或此”的简写方式

时间:2019-12-16 13:43:07

标签: php if-statement conditional-statements

我搜索了但找不到我想要的东西。我有以下代码:

if ( $_SERVER[ "REQUEST_URI" ] === "/post" || $_SERVER[ "REQUEST_URI" ] === "/post/" ) {

    // redirect to "/"

} else {

    // logic to display the post (uri to db query)

}

可以正常工作。我试图将比较缩短为(截断):

...... $_SERVER[ "REQUEST_URI" ] === "/post" || "/post/" .......

我没想到它会起作用,实际上是希望它会抛出一个错误。没有错误,但是此页面现在有任何URI; /post/post//post/my-first-post全部执行if / else语句的if部分。

第二部分将永远不会执行。为什么会这样?执行此操作的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

使用 in_array(),您可以缩短代码。

$rurl_route_list=['/post', '/post/']

if ( in_array($_SERVER[ "REQUEST_URI" ], $url_route_list)) {

    // redirect to "/"

} else {

    // logic to display the post (uri to db query)

}

答案 1 :(得分:1)

使用简单的正则表达式的替代方法:

if (preg_match('~^/post/?$~', $_SERVER['REQUEST_URI'])) {
  // ...
}

这与/post/?后面的可选斜杠匹配。