繁体   English   中英

php:是否可以通过这种方式使用if / else?

[英]php: is valid to use if/else in this way?

有没有办法优化这样的东西?
我已经尝试过了,但是行不通(至少在php中)

$foo = 6;
if ($foo != (3 or 5 or 10)) echo "it work";
elseif($foo < (5 or 10)) echo "it work again";
else echo "it doesn't work;"

我想知道是否有更好的方法来编写这种验证。
但是,如果在其他语言中也可以使用这种方法,请告诉我。


编辑:
为此的答案

 ($foo != (3 or 5 or 10)) -> in_array($foo,array(3,5,10)) 


如果我想要类似的东西,做同样的工作

 ($foo != (3 and 5 and 10)) 

不,这不对。 您正在针对$foo BOOLEAN结果or操作的$foo值进行测试。 归结为

if ($foo != (true or true or true))

这很简单

if ($foo != true)
if (!$foo)

如果要针对多个值测试单个值,可以尝试

if(!in_array($foo, array(3,5,10))) { ... }

代替。 对于您的<版本,此功能无效。 您必须分别测试每个值:

if (($foo < 5) or ($foo < 10)) { ... }

尽管从技术上讲这有点多余,因为如果$ foo小于5,则它已经小于10。

第一次可以使用

if(!in_array($foo, [5,10,15]))

第二件事在任何语言中都不起作用,因为对于少于10的每件事,少于5或10都是正确的,因此不需要5。但是我明白你的意思。 我不知道这样做的快速方法

在python中,您可以执行以下操作:

if(5 < x < 10)
    a, b = b, a // swapping these two

我同意其他答案,并且,如果您还有更多工作要做,您还可以执行以下操作:

<?php

$x = 3;

switch ($x)
{
    case 6:
        $x = 5;
    case 3:
    case 7:
        $x = 5;
    case 5:
        echo 'It is working' . PHP_EOL;
        break;
}

编辑 :感谢DanFromGermany指出堆叠的箱子。 添加它们作为示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM