仅当文件路径具有特定扩展名时才显示数组行


Display array rows only if a file path has a certain extension

我有一个数组,其中包含视频文件的文件路径。有各种文件格式.avi,.mp4等

现在我只想显示文件路径的文件扩展名为.mp4的行。

目前,我正在使用一个函数来提取文件扩展名,但在显示行时,我在动态执行此操作时遇到了问题。

文件路径示例:c:''TempVideoDir''Office-p-cam01-20140826-083016.avi

我用来获取文件文本的函数:

function get_fileext($filename) {
   $cut_fileext = (explode('.', $filename));
   $just_fileext = $cut_fileext[1];
   echo $just_fileext; 
}

这很好用。

现在,我正在查询数据库以获取文件路径以及有关该文件的其他详细信息,并且我只想显示文件路径包含.mp4文件的行。

我已经尝试了我能在谷歌等上找到的一切,但这就是我目前拥有的:

  $stmt->execute();
  $result = $stmt->fetchAll();
  foreach($result as $row) {
        if (in_array((get_fileext($row["Filename"])== "mp4"), $result)) {
        echo "  blah blah

我不能选择将文件扩展名添加到数据库表中,因为这是由一台设备自动备份的。

那么,whadoyareckon?有可能像这样快速地做吗?

非常感谢您的帮助!

感谢

我认为你不能那样使用in_array()。它搜索数组的整个索引,所以当它查找ate$result[]时,它永远不会找到只有ext.的$row[‘filename’]

试试这个:

//looping through $result array
foreach($result as $row) {
    //check if $row['filename'] has a string with a mp4 extension.
    if (get_fileext($row["Filename"])== "mp4") {
    echo "Row has a filename with the mp4 extension';

正如其他人指出的那样,修复get_filext()方法以返回一些内容。

function get_fileext($filename) {
   $cut_fileext = (explode('.', $filename));
   $just_fileext = $cut_fileext[1];
   return $just_fileext; 
}

您的函数没有返回值。它正在向输出发出值:

function get_fileext($filename) {
    $cut_fileext = (explode('.', $filename));
    $just_fileext = $cut_fileext[1];
    echo $just_fileext; 
}

因此,任何调用该函数都无法看到结果。相反,返回值:

function get_fileext($filename) {
    $cut_fileext = (explode('.', $filename));
    $just_fileext = $cut_fileext[1];
    return $just_fileext; 
}

这样,函数本身的调用将计算为返回值,从而允许您在逻辑中使用该函数。

您可以考虑调整数据库查询,使其只返回带有".mp4"文件的行。

将您的查询更改为具有以下内容:

filepath = "%.mp4"

在MySQL中,%运算符是一个通配符,因此它将匹配任何以".mp4"结尾的字符串