php奇数文件扩展名错误


php odd file extension error

不太确定发生了什么。好吧,所以基本上脚本是在一个"if"函数中,并将当前图像扩展名与加载到页面中的文件(如(进行比较

if ( $row['file_type'] == 'jpg' && 'jpeg' && 'png' && 'gif') {  
    $img = "obj.php?id=".base64_encode($row['file_path'])."&mode;thumb";
} else {
   $img = "assets/filesystem/file_extension_".$row['file_type'].".png";
}

如果我用"或"替换"&&",它适用于JPG、PNG、JPEG和GIF,但在else语句中失败,并且不适用于所有其他文件类型,因此不会通过file_extension_docx.PNG 返回docx

关于为什么会发生这种情况,有什么线索吗?因为如果我把它保持在"&&",它运行$img就没有问题,并返回所有JPEG/JPG文件的缩略图,而不是PNG和GIF,它们是以file_extension_PNG.PNG或file_extession''ugif.PNG的形式从资产中返回的,而不是通过obj.php文件以图像缩略图的形式返回

问题是$row['file_type'] == 'jpg' && 'jpeg' && 'png' && 'gif'的求值结果类似于。。。

$row['file_type'] contains 'jpg'
AND 'jpeg' is a non empty string
AND 'png' is a non empty string
AND 'gif' is a non empty string

实际上,您并不是在对照每个字符串检查变量的值。

如果您想检查$row['file_type']是否包含其中一个值。。。例如,您可以使用in_array()函数:

if (in_array($row['file_type'], array('jpeg', 'jpg', 'png', 'gif'))) {
  // ...
} else {
  // ...
}

或者你可以明确地做

if ($row['file_type'] == 'jpg' || $row['file_type'] == 'jpeg' || $row['file_type'] == 'png'  || $row['file_type'] == 'gif') {
  // ...
} else {
  // ...
}

我希望这能有所帮助。

if ( $row['file_type'] == 'jpg' && 'jpeg' && 'png' && 'gif')

由替代

if ( $row['file_type'] == 'jpg' || $row['file_type'] ==  'jpeg' || $row['file_type'] ==  'png' || $row['file_type'] ==  'gif')

只是一个建议,您还可以使用switch case来实现这一点,这要容易得多。

switch($row['file_type']){
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
// put your if codes here
break;
// put your else code under default
default: 
break;
}