如何比6x OR语句更好地做到这一点

时间:2014-07-18 14:42:31

标签: php smarty

我是编程新手,我找不到答案,或者我根本不理解答案。

无论哪种方式,这都是我的代码。我怎么能改变它,以便它不使用6或_语句?

 {if $smarty.server.REQUEST_URI == '/home-product.php?id_product=1' 
OR $smarty.server.REQUEST_URI == '/home-product.php?id_product=2'
OR $smarty.server.REQUEST_URI == '/home-product.php?id_product=3'
OR $smarty.server.REQUEST_URI == '/home-product.php?id_product=4'
OR $smarty.server.REQUEST_URI == '/home-product.php?id_product=5'
OR $smarty.server.REQUEST_URI == '/home-product.php?id_product=6'}

3 个答案:

答案 0 :(得分:1)

在我看来,你不应该在Smarty做这样的事情。您应该使用例如in_array在PHP中执行此操作。 Smarty仅用于显示数据而不用于此类比较。

你也可以使用Smarty语法:

{assign var="test" value ="5"}

{if in_array($test, array(1,2,5,8))}
is in array
{else}
is not in array
{/if}

修改

在这种情况下,它很简单:

{if in_array($smarty.server.REQUEST_URI, 
    array(
    '/home-product.php?id_product=1',
    '/home-product.php?id_product=2',
    '/home-product.php?id_product=3',
    '/home-product.php?id_product=4',
    '/home-product.php?id_product=5',
    '/home-product.php?id_product=6'
    ))}
is in array
{else}
is not in array
{/if}

答案 1 :(得分:0)

$num = substr($smarty.server.REQUEST_URI, -1);
if ($num > 0 AND $num < 7) { /* TRUE */ }

显然这是PHP,而不是Smarty语法。

答案 2 :(得分:0)

您可以直接在Smarty中访问GET变量。

{if in_array($smarty.get.id_product, range(1,6))}
    is in array
{else}
    is not in array
{/if}