如何使用PHP if/else三元函数实现两组可能性

如何使用PHP if/else三元函数实现两组可能性,php,ternary,Php,Ternary,我目前正在使用类似于: <?=($d === 'bar' || $d === 'foo') ? 'response' : null ?> 要创建逻辑,如果$d是'bar'和'foo',则返回'response'字符串。有没有一种更优雅的方法来写这个呢?您可以使用一种使用数组的方法-这使它在多种情况下更具可读性: <?= in_array($d, ['bar', 'foo']) ? 'response' : null ?> 您已经以优雅的方式编写了。您可以使用PHP

我目前正在使用类似于:

<?=($d === 'bar' || $d === 'foo') ? 'response' : null ?>


要创建逻辑,如果
$d
是'bar'和'foo',则返回'
response
'字符串。有没有一种更优雅的方法来写这个呢?

您可以使用一种使用数组的方法-这使它在多种情况下更具可读性:

<?= in_array($d, ['bar', 'foo']) ? 'response' : null ?>

您已经以优雅的方式编写了。您可以使用PHP
in_array()
函数,而
in_array()
函数会在数组中搜索特定值

注意:如果搜索参数是字符串且类型参数设置为TRUE,则搜索区分大小写

<?=(in_array($d, ['foo', 'bar'])) ? 'response' : null ?>

为了提高可读性,您可以使此代码变得更好

<?php $foo_bar = ["foo", "bar", "bla", "blaa"]; ?>

<?=(in_array($d, $foo_bar)) ? 'response' : null ?>

在其他地方定义您的条件,并将其与匹配,并启用严格的比较
=
,如果需要的话

$response_matches = array('foo','bar');


我希望你的意思是:'如果$d是'bar'或'foo'。除此之外,这主要是偏好的问题。我可能会为此编写一个实际的if。我可能遗漏了一些东西,但as字符串怎么可能既是一个东西又是另一个呢?你可以在数组($d,$arr)中使用
,其中
$arr
包含你的
foo
。但是@DevDonkey对你的问题有很好的解释对不起-我的意思是问它是“要么”一个还是另一个,而不是两者都是。保持简单。保持可读性。1.去掉短标签。2.三元逻辑检查很好,所以不要过度设计。我不确定这是一个有效的答案,因为这个问题很不清楚。它说,
$d
应该是“foo
bar
”,而不是任何一个(我们知道这是不可能的),对于一个大的集合来说,这种方式的可读性可能更好,但对于两个选项来说,它并没有太大的改进,而实际创建一个数组并检查其中的值会带来相对较大的开销。“但这是一个偏好的问题。”格鲁皮克劳顿是的,这是真的。但是我假设OP的措辞是错误的,因为给定的代码也告诉我们,
$d
应该是一个或多个other@NicoHaase很抱歉-我想问的是“要么”是“要么”是“要么”,而不是“要么”是“要么”。这当然是另一种方式。但它的处理器周期更昂贵,可读性也更低。
<?= in_array($d, $response_matches, true) ? 'response' : '' ?>