-1

不太清楚发生了什么。好的,所以基本上脚本在“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_extension_gif.png,而不是作为图像缩略图返回通过 obj.php 文件

4

3 回答 3

4

问题是$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 {
  // ...
}

我希望这有帮助。

于 2012-12-24T16:41:10.007 回答
2
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')
于 2012-12-24T16:35:29.707 回答
2

只是一个建议,你也可以使用 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;

}
于 2012-12-24T16:37:33.310 回答