8

我目前正在编写一种下载管理器,我在问自己这是否可能:

if($ext == ('zip' || 'png')) { echo "Is it possible ?" }

它每次都返回true,所以我想这是不可能的。但是您知道我如何轻松做到这一点吗?我的意思是,没有大量的“如果”或“开关”......

不管怎么说,还是要谢谢你 !:)

4

9 回答 9

22

你可以使用in_array($ext,array('png','zip','another','more'))

见这里: http: //php.net/manual/en/function.in-array.php

于 2010-01-24T15:52:23.677 回答
12

if($ext == ('zip' || 'png'))正在按以下顺序进行比较 -> ('zip' || 'png'),因为至少有一个不为空,所以返回 TRUE。将其替换为现在,($ext == TRUE),我将竭尽全力并猜测 php 只是在评估它($ext),这也是正确的。

if ( $ext == 'zip' || $ext == 'png' )将检查您要查找的内容。

于 2010-01-24T15:56:05.637 回答
4

您可以使用switch-case语句:

switch($ext)
{ 
  case 'png':
  case 'zip':
       // Will run for both 'png' and 'zip'
       echo "It is possible";
       break;
  default:
       echo "unknown extension!";
       break;
 }
于 2010-01-24T15:51:42.093 回答
3

您可以使用正则表达式,例如

if(preg_match("/^(zip|png)$/", $ext) { echo “It is possible!” }

相关问题:使用正则表达式检查 PHP 中的文件扩展名

于 2010-01-24T15:51:01.037 回答
3
if(($ext == 'zip') || ($ext == 'png')) { echo "It's possible." }
于 2010-01-24T15:51:55.933 回答
2

这绝对是可能的,但是您在那里所做的代码不正确。这是你写的:

if($ext == ('zip' || 'png')) { echo "Is it possible ?" }

这是在 php 中的翻译:

if( (if $ext evaluates to true then return true) == ( if 'zip' evaluates to true then return true || if 'png' evaluates to true then return true ) )

所以,因为 'zip' 不是 php 中定义的 'empty' 或 'false' 值之一,'png' 也不是,所以你基本上是在运行这个 if 语句:

if($ext == true)

哪个,如果它不是空的,它就是。

你想要的是 - 如前所述:

if($ext == 'zip' || $ext == 'png')
于 2010-01-24T15:56:42.063 回答
2

小建议:PHP 使用类似于 C 的布尔类型处理,在某种意义上,实际上任何非零值都被认为是“真”,以防驻留在 if 语句的条件部分。例如,如果您在比较构造和类型中错过了 '=' 符号,if($var = "val")而不是if($var == "val")您将始终在该语句中得到一个真值,因为 '=' 运算符将作为来自右侧部分“val”的设置操作值的结果返回即依次转换为“真”。所以最好将文字写在比较条件的左侧,if("val" == $var)因为在这种情况下,如果在“==”比较中丢失一个“=”符号,则会出现错误。

所以你的 if 语句必须是这样的: if('zip' == $ext || 'png' == $ext) { echo "Is it possible ?" }

也可能最好将 'zip' 和 'png' 文字放在名称为 FILE_TYPE_ZIP、FILE_TYPE_PNG 的常量中,或者定义一些枚举实体,例如位于源页面顶部的全局 PHP 数组,或者甚至创建一些单独的外部文件中的类 SupportedFileTypes 将强调程序支持的文件类型(在这种情况下,请查看PHP 和枚举以获取详细信息)。

在开始开发性能问题时不必打扰您,因为编写易于阅读和将来发展/优化的代码至关重要。

于 2010-01-25T17:17:15.530 回答
1
if (in_array($ext, array('png', 'zip'))) {
    echo "Is it possible ?"
}

如果您需要多次,该数组可以存储在某个地方。

于 2010-01-24T15:53:15.600 回答
0

您可以简单地使用:

if($ext == 'zip' || $ext == 'png') 
{ 
   echo "It's possible";
}
于 2020-08-13T08:10:04.533 回答