不太确定发生了什么。好吧,所以基本上脚本是在一个"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;
}