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

时间:2014-09-18 14:32:13

标签: php mysql arrays

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

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

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

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

用于获取文件ext的函数:

function get_fileext($filename) {

   $cut_fileext = (explode('.', $filename));
   $just_fileext = $cut_fileext[1];

   echo $just_fileext; 
}

哪种方法正常。

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

我已经尝试过我能在Google等上找到的所有东西,但这就是我现在拥有的东西:

  $stmt->execute();
  $result = $stmt->fetchAll();

  foreach($result as $row) {

        if (in_array((get_fileext($row["Filename"])== "mp4"), $result)) {

        echo "  blah blah

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

那么,whadoyareckon?有可能像这样在飞行中做到吗?

非常感谢任何帮助!

由于

3 个答案:

答案 0 :(得分:1)

我不认为你可以像这样使用in_array()。它搜索数组的整个索引,所以当它看起来吃$ result []时,它永远不会找到$ 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_fileext()方法以返回一些内容。

function get_fileext($filename) {

   $cut_fileext = (explode('.', $filename));
   $just_fileext = $cut_fileext[1];

   return $just_fileext; 
}

答案 1 :(得分:0)

您的功能没有返回值。它将值发送到输出:

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; 
}

这样,函数本身的调用就会计算出返回的值,允许你在逻辑中使用这个函数。

答案 2 :(得分:-1)

您可以考虑将数据库查询调整为仅使用" .mp4"返回行。文件。

将您的查询更改为:

filepath = "%.mp4"

在MySQL中,%运算符是通配符,因此这将匹配以" .mp4"

结尾的任何字符串