如何在 foreach 语句中编写 if 语句


How to write an if statement in a foreach statement

我目前正在编写一个脚本,其中用户在表单中输入一个数字,脚本在文件夹中搜索与该数字匹配的图像并将其显示给用户(下载按钮来了)。现在我的代码如下所示:

$photo_id = trim($_REQUEST['photo_id']);
$dir = "./wp-content/uploads/easter_pics";
$images = (scandir($dir));
foreach ($images as $value); {
  $file_ext = strpos($value, ".");
  $file_name = substr($value, 0, $file_ext);
  if ($file_name === $photo_id) {
    echo ("<img src = '../wp-content/uploads/easter_pics/" . 
    $file_name . ".jpg' />");
  }
}

仅当用户输入目录中最后一个图像的编号时,此代码才有效。我想我明白了什么是错的基本原则。$images不断被分配数组中最后一个项目的值以进行$dir。至少我认为。

问题是我可能是错的,而且我不知道如何解决它。我希望 if 语句显示图像,如果用户输入与目录中的任何照片匹配然后中断。

你的foreach是错误的:

foreach ($images as $value); {

应该是

foreach ($images as $value) {

(注意缺少的分号)

话虽如此,对于您的特定情况,扫描目录foreach可能不是最佳解决方案。尝试更好地验证输入(例如,如果ID始终是数字,请使用intval),然后查看文件是否存在。