首先,我想说我不是程序员,但我今天一直在玩一些简单的PHP脚本,而且对于那些知道的人我有一个快速的问题。我如何简化以下代码,以便它不使用所有这些OR逻辑运算符?
$number = "";
if ("$number" == 2 || "$number" == 3 || "$number" == 8 || "$number" == 10)
{
echo ('Your number is ' . "$number");
}
谢谢, 克里斯
答案 0 :(得分:7)
<?php
if (in_array($number,array(2,3,8,10))) {
echo 'Your number is '.$number;
}
或
<?php
switch ($number) {
case 2:
case 3:
case 8:
case 10:
echo 'Your number is '.$number;
break;
case 99;
echo 'Your number is 99';
break;
}
答案 1 :(得分:2)
首先,虽然你的变量引用不会导致代码中断,但你真的不需要它们,事实上你的代码仍然有效的唯一原因是PHP有一个奇怪的系统来匹配字符串和整数
无论如何,重写该代码的一种方法是
$validNumbers = array(2,3,8,10);
if (in_array($number, $validNumbers))
{
echo ('Your number is '. $number);
}
从技术上讲,你也可以这样做
if ((1 << $number) & 1292)
如果你进入了不可读的代码。这是有效的,因为1292的二进制表示具有1,正好位于二进制数字2,3,8和10。
答案 2 :(得分:1)
你不能以一种有意义的方式使它更简单。我会保持这样。
编辑:通过“简化”,我猜你想做更少的操作...
答案 3 :(得分:-3)
你可以这样做:
$valid_numbers = array(2, 3, 8, 10);
if (in_array($number, $valid_numbers)) {
echo 'Your number is ', $number;
}
p.s。:你不需要/将错误的数字放在引号之间是错误的,因为你期待一个int。
希望这会有所帮助