Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 输出:如果与模式不匹配,则文件不可用_Php_File_Foreach_Scandir - Fatal编程技术网

Php 输出:如果与模式不匹配,则文件不可用

Php 输出:如果与模式不匹配,则文件不可用,php,file,foreach,scandir,Php,File,Foreach,Scandir,代码如下: $course = htmlspecialchars($_GET["course"]); $db = odbc_connect('#'); // Course Heading $courseheading = "SELECT * FROM tbsessions, tbcourses, tbpresentations WHERE (tbsessions.courseId = tbcou

代码如下:
        $course = htmlspecialchars($_GET["course"]);
        $db = odbc_connect('#');

        // Course Heading
        $courseheading = "SELECT * 
        FROM tbsessions, tbcourses, tbpresentations 
        WHERE (tbsessions.courseId = tbcourses.courseId) 
        AND (tbpresentations.courseSessionId = tbsessions.courseSessionId) 
        AND (tbsessions.courseSessionID = '$course') 
        AND (tbsessions.category NOT IN ('M','S')) 
        ORDER BY startDate DESC, courseTitle";

        $courseRS = odbc_exec($db, $courseheading);
        $courseTitle = odbc_result($courseRS, "courseTitle");
        $subtitle = odbc_result($courseRS, "subtitle");

            echo '<div class="title">
                <h1>'.$courseTitle.'</h1>
            <p>'.$subtitle.'</p></div>';

        // Presentation Information
        $query = "SELECT *
        FROM tbspeakers s join tbpresentations p on
        s.spkrId = p.spkrId

        join tbsessions ss on
        p.courseSessionid = ss.courseSessionId

        join tbcourses c on
        ss.courseId = c.courseId

        WHERE (ss.courseSessionID = '$course')

        ORDER BY pTitle";


        $result = odbc_exec($db, $query);
    // Generate presentation and speaker information    
        while(odbc_fetch_row($result)){
                $courseTitle = odbc_result($result, "courseTitle");
                $subtitle = odbc_result($result, "subtitle");
                $pTitle = odbc_result($result, "pTitle");
                $fname = odbc_result($result, "fname");
                $lname = odbc_result($result, "lname");
                $degree = odbc_result($result, "degree");
                $pSDateTime = odbc_result($result, "pSDateTime");


                echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
                $courseTitle = explode(" ", $courseTitle);
                $course = "";
                $courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
                foreach ($courseTitle as $value) {
                    $course .= substr($value, 0, 2);
                }
                $pSDateTime = str_replace('-', '', $pSDateTime);
                $pSDateTime = str_replace(':', '', $pSDateTime);
                $pSDateTime = str_replace(' ', '_', $pSDateTime);
                $pSDateTime = substr($pSDateTime, 0, -2);
                $presentation = strToLower($course). '_' .$pSDateTime;

            // Generate presentation download link
                $dir    = '../assets/training/archive';
                $files = scandir($dir);
                $imgarray = array();
                foreach($files as $file) {
                  if(fnmatch($presentation.'.*',$file)) {
                    $imgarray[] = $file;
                  }
                }

                foreach($imgarray as $download) {
                  if(isset($download)) {
                      echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
                  }
                  else {
                      echo 'File Not Available';
                  }
                }


        }
    ?>
任务:
        $course = htmlspecialchars($_GET["course"]);
        $db = odbc_connect('#');

        // Course Heading
        $courseheading = "SELECT * 
        FROM tbsessions, tbcourses, tbpresentations 
        WHERE (tbsessions.courseId = tbcourses.courseId) 
        AND (tbpresentations.courseSessionId = tbsessions.courseSessionId) 
        AND (tbsessions.courseSessionID = '$course') 
        AND (tbsessions.category NOT IN ('M','S')) 
        ORDER BY startDate DESC, courseTitle";

        $courseRS = odbc_exec($db, $courseheading);
        $courseTitle = odbc_result($courseRS, "courseTitle");
        $subtitle = odbc_result($courseRS, "subtitle");

            echo '<div class="title">
                <h1>'.$courseTitle.'</h1>
            <p>'.$subtitle.'</p></div>';

        // Presentation Information
        $query = "SELECT *
        FROM tbspeakers s join tbpresentations p on
        s.spkrId = p.spkrId

        join tbsessions ss on
        p.courseSessionid = ss.courseSessionId

        join tbcourses c on
        ss.courseId = c.courseId

        WHERE (ss.courseSessionID = '$course')

        ORDER BY pTitle";


        $result = odbc_exec($db, $query);
    // Generate presentation and speaker information    
        while(odbc_fetch_row($result)){
                $courseTitle = odbc_result($result, "courseTitle");
                $subtitle = odbc_result($result, "subtitle");
                $pTitle = odbc_result($result, "pTitle");
                $fname = odbc_result($result, "fname");
                $lname = odbc_result($result, "lname");
                $degree = odbc_result($result, "degree");
                $pSDateTime = odbc_result($result, "pSDateTime");


                echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
                $courseTitle = explode(" ", $courseTitle);
                $course = "";
                $courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
                foreach ($courseTitle as $value) {
                    $course .= substr($value, 0, 2);
                }
                $pSDateTime = str_replace('-', '', $pSDateTime);
                $pSDateTime = str_replace(':', '', $pSDateTime);
                $pSDateTime = str_replace(' ', '_', $pSDateTime);
                $pSDateTime = substr($pSDateTime, 0, -2);
                $presentation = strToLower($course). '_' .$pSDateTime;

            // Generate presentation download link
                $dir    = '../assets/training/archive';
                $files = scandir($dir);
                $imgarray = array();
                foreach($files as $file) {
                  if(fnmatch($presentation.'.*',$file)) {
                    $imgarray[] = $file;
                  }
                }

                foreach($imgarray as $download) {
                  if(isset($download)) {
                      echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
                  }
                  else {
                      echo 'File Not Available';
                  }
                }


        }
    ?>

我试图只抓取与演示文稿匹配的文件。不应考虑所有其他文件,这样,如果未找到匹配项,则会显示文件不可用。

如果要知道数组是否为空,只需添加一个:

        $course = htmlspecialchars($_GET["course"]);
        $db = odbc_connect('#');

        // Course Heading
        $courseheading = "SELECT * 
        FROM tbsessions, tbcourses, tbpresentations 
        WHERE (tbsessions.courseId = tbcourses.courseId) 
        AND (tbpresentations.courseSessionId = tbsessions.courseSessionId) 
        AND (tbsessions.courseSessionID = '$course') 
        AND (tbsessions.category NOT IN ('M','S')) 
        ORDER BY startDate DESC, courseTitle";

        $courseRS = odbc_exec($db, $courseheading);
        $courseTitle = odbc_result($courseRS, "courseTitle");
        $subtitle = odbc_result($courseRS, "subtitle");

            echo '<div class="title">
                <h1>'.$courseTitle.'</h1>
            <p>'.$subtitle.'</p></div>';

        // Presentation Information
        $query = "SELECT *
        FROM tbspeakers s join tbpresentations p on
        s.spkrId = p.spkrId

        join tbsessions ss on
        p.courseSessionid = ss.courseSessionId

        join tbcourses c on
        ss.courseId = c.courseId

        WHERE (ss.courseSessionID = '$course')

        ORDER BY pTitle";


        $result = odbc_exec($db, $query);
    // Generate presentation and speaker information    
        while(odbc_fetch_row($result)){
                $courseTitle = odbc_result($result, "courseTitle");
                $subtitle = odbc_result($result, "subtitle");
                $pTitle = odbc_result($result, "pTitle");
                $fname = odbc_result($result, "fname");
                $lname = odbc_result($result, "lname");
                $degree = odbc_result($result, "degree");
                $pSDateTime = odbc_result($result, "pSDateTime");


                echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
                $courseTitle = explode(" ", $courseTitle);
                $course = "";
                $courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
                foreach ($courseTitle as $value) {
                    $course .= substr($value, 0, 2);
                }
                $pSDateTime = str_replace('-', '', $pSDateTime);
                $pSDateTime = str_replace(':', '', $pSDateTime);
                $pSDateTime = str_replace(' ', '_', $pSDateTime);
                $pSDateTime = substr($pSDateTime, 0, -2);
                $presentation = strToLower($course). '_' .$pSDateTime;

            // Generate presentation download link
                $dir    = '../assets/training/archive';
                $files = scandir($dir);
                $imgarray = array();
                foreach($files as $file) {
                  if(fnmatch($presentation.'.*',$file)) {
                    $imgarray[] = $file;
                  }
                }

                foreach($imgarray as $download) {
                  if(isset($download)) {
                      echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
                  }
                  else {
                      echo 'File Not Available';
                  }
                }


        }
    ?>
<html>
  <body>
<?php
$dir = "../assets/training/archive";
$files = scandir($dir);
$imgarray = array();
$presentation = '*.php'; // ENTER ANY FILENAME OR PATTERN HERE.
foreach($files as $file)
  if(fnmatch($presentation,$file))
     $imgarray[] = $file;

if ( count( $imgarray ) == 0 ) // NO MATCHES.
     echo 'No files available';
else foreach($imgarray as $download)
       echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
?>
  </body>
</html>

如果这是您需要的,请告诉我。

这应该适合您:

        $course = htmlspecialchars($_GET["course"]);
        $db = odbc_connect('#');

        // Course Heading
        $courseheading = "SELECT * 
        FROM tbsessions, tbcourses, tbpresentations 
        WHERE (tbsessions.courseId = tbcourses.courseId) 
        AND (tbpresentations.courseSessionId = tbsessions.courseSessionId) 
        AND (tbsessions.courseSessionID = '$course') 
        AND (tbsessions.category NOT IN ('M','S')) 
        ORDER BY startDate DESC, courseTitle";

        $courseRS = odbc_exec($db, $courseheading);
        $courseTitle = odbc_result($courseRS, "courseTitle");
        $subtitle = odbc_result($courseRS, "subtitle");

            echo '<div class="title">
                <h1>'.$courseTitle.'</h1>
            <p>'.$subtitle.'</p></div>';

        // Presentation Information
        $query = "SELECT *
        FROM tbspeakers s join tbpresentations p on
        s.spkrId = p.spkrId

        join tbsessions ss on
        p.courseSessionid = ss.courseSessionId

        join tbcourses c on
        ss.courseId = c.courseId

        WHERE (ss.courseSessionID = '$course')

        ORDER BY pTitle";


        $result = odbc_exec($db, $query);
    // Generate presentation and speaker information    
        while(odbc_fetch_row($result)){
                $courseTitle = odbc_result($result, "courseTitle");
                $subtitle = odbc_result($result, "subtitle");
                $pTitle = odbc_result($result, "pTitle");
                $fname = odbc_result($result, "fname");
                $lname = odbc_result($result, "lname");
                $degree = odbc_result($result, "degree");
                $pSDateTime = odbc_result($result, "pSDateTime");


                echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
                $courseTitle = explode(" ", $courseTitle);
                $course = "";
                $courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
                foreach ($courseTitle as $value) {
                    $course .= substr($value, 0, 2);
                }
                $pSDateTime = str_replace('-', '', $pSDateTime);
                $pSDateTime = str_replace(':', '', $pSDateTime);
                $pSDateTime = str_replace(' ', '_', $pSDateTime);
                $pSDateTime = substr($pSDateTime, 0, -2);
                $presentation = strToLower($course). '_' .$pSDateTime;

            // Generate presentation download link
                $dir    = '../assets/training/archive';
                $files = scandir($dir);
                $imgarray = array();
                foreach($files as $file) {
                  if(fnmatch($presentation.'.*',$file)) {
                    $imgarray[] = $file;
                  }
                }

                foreach($imgarray as $download) {
                  if(isset($download)) {
                      echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
                  }
                  else {
                      echo 'File Not Available';
                  }
                }


        }
    ?>
在这里,我首先从您的目录中获取所有已排除的文件。和然后我过滤掉所有与模式不匹配的文件。最后,我简单地遍历所有文件,检查当前文件是否与模式匹配,是否在过滤数组中,或者是否

        $course = htmlspecialchars($_GET["course"]);
        $db = odbc_connect('#');

        // Course Heading
        $courseheading = "SELECT * 
        FROM tbsessions, tbcourses, tbpresentations 
        WHERE (tbsessions.courseId = tbcourses.courseId) 
        AND (tbpresentations.courseSessionId = tbsessions.courseSessionId) 
        AND (tbsessions.courseSessionID = '$course') 
        AND (tbsessions.category NOT IN ('M','S')) 
        ORDER BY startDate DESC, courseTitle";

        $courseRS = odbc_exec($db, $courseheading);
        $courseTitle = odbc_result($courseRS, "courseTitle");
        $subtitle = odbc_result($courseRS, "subtitle");

            echo '<div class="title">
                <h1>'.$courseTitle.'</h1>
            <p>'.$subtitle.'</p></div>';

        // Presentation Information
        $query = "SELECT *
        FROM tbspeakers s join tbpresentations p on
        s.spkrId = p.spkrId

        join tbsessions ss on
        p.courseSessionid = ss.courseSessionId

        join tbcourses c on
        ss.courseId = c.courseId

        WHERE (ss.courseSessionID = '$course')

        ORDER BY pTitle";


        $result = odbc_exec($db, $query);
    // Generate presentation and speaker information    
        while(odbc_fetch_row($result)){
                $courseTitle = odbc_result($result, "courseTitle");
                $subtitle = odbc_result($result, "subtitle");
                $pTitle = odbc_result($result, "pTitle");
                $fname = odbc_result($result, "fname");
                $lname = odbc_result($result, "lname");
                $degree = odbc_result($result, "degree");
                $pSDateTime = odbc_result($result, "pSDateTime");


                echo '<p><strong>'.$pTitle. '</strong> - ' . $fname . ' ' . $lname . ', ' . $degree . '</p>';
                $courseTitle = explode(" ", $courseTitle);
                $course = "";
                $courseTitle = preg_replace('/\(|\)/', '', $courseTitle);
                foreach ($courseTitle as $value) {
                    $course .= substr($value, 0, 2);
                }
                $pSDateTime = str_replace('-', '', $pSDateTime);
                $pSDateTime = str_replace(':', '', $pSDateTime);
                $pSDateTime = str_replace(' ', '_', $pSDateTime);
                $pSDateTime = substr($pSDateTime, 0, -2);
                $presentation = strToLower($course). '_' .$pSDateTime;

            // Generate presentation download link
                $dir    = '../assets/training/archive';
                $files = scandir($dir);
                $imgarray = array();
                foreach($files as $file) {
                  if(fnmatch($presentation.'.*',$file)) {
                    $imgarray[] = $file;
                  }
                }

                foreach($imgarray as $download) {
                  if(isset($download)) {
                      echo '<p><a href="/assets/training/archive/'.$download.'">Download</a></p> <br><br>';
                  }
                  else {
                      echo 'File Not Available';
                  }
                }


        }
    ?>
<?php

    $dir = "../assets/training/archive";
    $files = glob("$dir/*.*");

    $filteredFiles = array_filter($files, function($v)use($presentation){
        return fnmatch($presentation.'.*', $v);
    });

    foreach($files as $file) {
        if(in_array($file, $filteredFiles)) 
            echo "<p><a href='/assets/training/archive/'". $file . "'>Download</a></p><br><br>";
        else
            echo "File Not Available";
    }

?>

为什么scandir读数会包含一个不存在的文件?。。下面是我们没有的随机文件列表。一个问题,用户4771351:如果文件夹有50个文件,并且只有10个与模式匹配,您想显示10个链接和40个文件不可用吗?是这样吗?Jose我的意图是,如果找不到特定的文件,则只显示一次“文件不可用”。若它找到了10,那个么它应该输出10,若它并没有找到任何东西,它应该输出一次不可用的文件。我想我要取消删除它,让你看看。Rizier昨天踢了我的屁股想得到我的答案,但可能对你有用,用户4771351。如果设置$download,这完全是多余的,而且OP的当前代码显示他的代码毫无意义,因为他试图知道是否正确检索了文件数据,在这种情况下,数组位置将为空。这没有什么区别,只是完全没有意义!伪代码:foreach$array作为$element如果循环的当前元素已设置,那么foreach$array作为$element如果循环的当前元素已设置,那么foreach$array作为$element显示,如果循环的当前元素已设置,那么以其他方式显示它不可用。^?如果你在数组中循环,每个元素都会被设置,否则它就不会在数组中了?!评论不用于扩展讨论;这段对话已经结束。