if($ ext ==('zip'||'png')){echo“有可能吗?” }

时间:2010-01-24 15:48:57

标签: php operators conditional-statements

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

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

每次都返回true,所以我想这是不可能的。但是你知道我怎么能轻易做到这一点吗?我的意思是,有很多“if”或“switch”......

非常感谢! :)

9 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:11)

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

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

答案 2 :(得分:5)

您可以使用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;
 }

答案 3 :(得分:3)

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

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

相关问题:Checking for file-extensions in PHP with Regular expressions

答案 4 :(得分:3)

if(($ext == 'zip') || ($ext == 'png')) { echo "It's possible." }

答案 5 :(得分: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')

答案 6 :(得分:2)

微小的建议:PHP在某种意义上使用类似于C布尔类型的处理,实际上任何非零值在驻留在if语句的条件部分时被认为是“真”。例如,如果您在比较构造中错过'='符号并键入if($var = "val")而不是if($var == "val"),那么您将始终在该语句中获得一个真值,因为'='运算符将作为set的结果返回 - 右边部分“val”的操作值,然后转换为“true”。因此,最好在比较条件if("val" == $var)的左侧部分写入文字,因为在这种情况下,如果在'=='比较中松开一个'='符号,则会出现错误。

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

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

在开始提出性能问题时,不必打扰你,因为编写易于阅读和进化/优化的代码至关重要。

答案 7 :(得分:1)

if (in_array($ext, array('png', 'zip'))) {
    echo "Is it possible ?"
}

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

答案 8 :(得分:0)

您可以简单地使用:

if($ext == 'zip' || $ext == 'png') 
{ 
   echo "It's possible";
}