当前位置: 首页 > 面试题库 >

PHP使用OR运算符对照多个值检查值

章高朗
2023-03-14
问题内容

我有一个filename($fname),然后需要$pClass用“-” 分配给文件类型。目前text-,无论文件类型如何,我总是会得到。

//This gets the extention for the file and assigns the class to the icon <i>
$pieces = explode('.', $fname);
$ext = array_pop($pieces);

if($ext == (('txt')||('rtf')||('log')||('docx'))){
  $pClass = 'text-';
}
else if($ext == (('zip')||('sitx')||('7z')||('rar')||('gz'))){
  $pClass = 'archive-';
}
else if($ext == (('php')||('css')||('html')||('c')||('cs')||('java')||('js')||('xml')||('htm')||('asp'))){
  $pClass = 'code-';
}
else if($ext == (('png')||('bmp')||('dds')||('gif')||('jpg')||('psd')||('pspimage')||('tga')||('svg'))){
  $pClass = 'image-';
}
else {
  $pClass = '';
}

为什么使用OR运算符的if语句不起作用?


问题答案:

该逻辑
||(OR)运算符
如您预期的工作不工作。该||运营商始终计算结果为布尔TRUE或FALSE。因此,在您的示例中,您的字符串将转换为布尔值,然后进行比较。

如果声明:

if($ext == ('txt' || 'rtf'|| 'log' || 'docx'))

归结为:

if($ext == (TRUE || TRUE || TRUE || TRUE))
if($ext == TRUE)

要解决此问题并使代码按您希望的方式工作,可以使用其他方法。

解决问题并针对多个值检查值的一种方法是,将值与多个值进行实际比较:

if($ext == "txt" || $ext == "rtf" /* || ... */)

in_array()

另一种方法是使用该函数in_array()并检查该值是否等于数组值之一:

if(in_array($ext, ["txt", "rtf" /* , ... */], TRUE))

注意:第二个参数用于严格比较

switch()

您还可以使用switch多个值来检查您的值,然后通过大小写检查。

switch($ext){

    case "txt":
    case "rtf":
 /* case ...: */
        $pClass = "text-";
    break;

}


 类似资料:
  • 问题内容: 我想检查一个变量是否具有多个值之一。我对为什么在这种情况下不起作用感到困惑。我正在按照给出该示例的教程进行操作,但是当我尝试执行此操作时,它只会根据第一个值检查变量。我的支票怎么了? 问题答案: (“Jesse” or “jesse”) 上面的表达式测试是否评估为。如果是这样,则表达式将返回它;否则,它将返回。该表达式等同于编写: 因为是一个非空字符串,所以它将 始终 求值为并因此返回

  • 问题内容: …按预期工作,但是如果我需要像这样检查多个字符串怎么办: …似乎不起作用。 问题答案:

  • 我正在使用我的Symfony项目中的getter和setter。在更改其他字段之前,我必须使用语句检查状态字段是否没有特定的值。 代码: 我还使用运算符定义了常量。我在想有没有比这更优雅的解决方案。也许函数,但不知道它能用在这场比赛中吗?

  • 每当我尝试注册并点击注册按钮时,我都会遇到这种类型的空值检查运算符的问题。我收到了这个错误消息 ══════ 异常捕获手势 ════════════════════ 在处理手势时引发了以下_CastError:对空值使用空检查运算符 当抛出异常时,这是堆栈 #0\u授权状态。建筑包装:gr_空间/屏幕/配置文件_屏幕。省道:244 #1(香港)地产_handleTap包装:颤振/材料/墨水井。省道

  • 问题内容: 我不明白这行的含义: 其中 参数 是字符串 为什么通常要对python字符串使用和运算符? 问题答案: 假设您使用的是的值,但如果说的是值,那么您希望使用一个空字符串代替。您一般会做什么? 这就是表达的意思。首先,你应该明白与运营商的作用: 返回如果是,否则返回。 返回如果是,否则返回。 所以,你的表情: 实际上等效于: 在以下情况下如何计算表达式: 评估为: result = (”

  • 问题内容: 我想在Zend_Db中生成这个复杂的WHERE子句: 我已经试过了: 并且产生了: 我确实找到了一种完成这项工作的方法,但是我觉得通过使用PHP先组合“ OR”子句,然后再使用Zend_Db where()子句将它们组合起来,这是一种“欺骗”。PHP代码: 产生了我想要的东西。但是我很好奇,是否有一种“官方”方式可以通过使用Zend_Db工具来获取复杂的WHERE语句(实际上并不太复杂