如何将数组中的键与服务器上的文件进行比较?

时间:2015-06-17 20:40:30

标签: php arrays file multidimensional-array automation

我有两个关于PHP文件的问题,如下所示:

$test = array('test1.txt' => '<random>', 'test2.txt' => '<random>', 'test3.txt' => '<random>', 'test4.txt' => '<random>', 'test5.txt' => '<random>');

我的服务器上也有这样的文件:

    /home/test1.txt
    /home/test2.txt
    /home/test3.txt
    /home/test4.txt
    /home/test5.txt

我如何通过检查数组中定义的每个文件是否也存在于/ home /文件夹中并且/ home /中的所有文件都在数组中定义?

Q2)有没有办法自动获取/home/*.txt中的文件名并自动将它们插入一个空数组中,如:

    $test = array('' => '<random>',
                   '' => '<random>',
                   '' => '<random>',
                   '' => '<random>',
                   '' => '<random>');

谢谢!

2 个答案:

答案 0 :(得分:1)

Q1)您可以从具有file_exists功能的路径数组中检查服务器上是否有文件。

foreach ($test as $str_filename=> $random) {
    if (file_exists('/home/' . $str_filename) === false) {
        echo 'A file is missing on server';
    }
}

你可以像这样使用glob函数获取.txt文件。

foreach (glob('/home/*') as $str_filename) {
    if (array_key_exists($str_filename, $test) === false) {
        echo 'A file is missing on array';
    }
}

Q2)如果random是文件中的内容,您可以使用file_get_contents函数获取它。

$test = [];
foreach (glob('/home/*.txt') as $str_filename) {
    $test[$str_filename] = file_get_contents('/home/' . $str_filename);
}

答案 1 :(得分:0)

试试这个:

foreach ($test as $fileName => $value) {
    if(file_exists("/home/{$fileName}")) {
        //exists
    } else {
        //Does not exist.
    }
}