【问题标题】:PHP Strange Behaviour of file_existsfile_exists 的 PHP 奇怪行为
【发布时间】:2018-05-20 06:16:54
【问题描述】:

我在 php 中有这个 for 循环:

for ($i=0; $i <= 10; $i++) {
      if (file_exists('./img/'.$i.'.jpg')) { 
          echo 'FILE: '.$i.'.jpg EXISTS!'; 
      } else { 
          echo 'FILE: '.$i.'.jpg NOT EXISTS!'; 
      }
}

我只将 1.jpg 和 3.jpg 放入文件夹 img,所以我只需要获取 1.jpg 和 3.jpg 文件存在,但我正在获取所有不存在的文件或一个文件存在以及所有其他文件不存在...为什么这个函数没有返回正确的结果?

【问题讨论】:

  • 你的目录结构是什么?
  • 目前的输出是什么,你期望什么?
  • @AlivetoDie--Anantsingh 为什么,有什么区别?
  • 那里不需要额外的引号。直接去:-if (file_exists("./img/$i.jpg")) {

标签: php


【解决方案1】:

我认为您对文件结构和相对路径

感到困惑

.// 相同,在脚本运行目录中获取相同的文件夹,如果要转到父目录,则需要添加../

我创建了相同的程序,它运行良好。

运行路径 /var/www/html/test 并检查文件夹 /var/www/html/test/img 并且工作正常

   for ($i=1; $i <= 10; $i++) {
    $selva = "./img/$i.jpg";
      if (file_exists($selva)) {
          echo 'FILE: '.$selva.' EXISTS!<br>';
      } else {
          echo 'FILE: '.$selva.' NOT EXISTS!<br>';
      }
   }

我认为您试图从 php 运行目录访问外部目录,因此您需要使用 ../

否则你可以简单地给出绝对路径

您可以使用dirname(__FILE__)获取当前文件夹

【讨论】:

  • 谢谢我混合了 './' 和 '../'...我添加了 '../' 现在工作正常..感谢您的建议并指出我忘记做什么
  • 很棒的伙伴,很高兴看到你解决了这个问题,编码愉快!
【解决方案2】:

请尝试以下代码:

$dirname = "./img/";
$images = glob($dirname."*.jpg");

它只会给你现有的 .jpg 文件

或者你可以使用你自己的代码没有else条件:

 for ($i=0; $i <= 10; $i++) {
            if (file_exists('./img/'.$i.'.jpg')){ 
            echo '<br/>FILE: '.$i.'.jpg EXISTS!'; 
           }
       } 

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 2011-05-17
    • 2013-02-07
    • 1970-01-01
    • 2014-07-08
    • 2013-08-09
    • 2021-11-21
    • 2012-01-07
    • 1970-01-01
    相关资源
    最近更新 更多