【问题标题】:Does '..' and '.' mean the same in php as it does in Linux [duplicate]'..' 和 '.'在 php 中的含义与在 Linux 中的含义相同 [重复]
【发布时间】:2021-12-19 01:03:25
【问题描述】:

我找不到 $user == '.' 的解释或 $user == '..' 在 php 中表示。 我有一个名为 $rooms 的文件夹,下面的代码检查文件夹中的文件。但我找不到以下内容的含义:if ($user == '.' || $user == '..')。我知道两条垂直线的意思是“或”。我发现这个链接很有用,但没有提供解决方案https://www.w3schools.com/php/php_operators.asp

$files = scandir($room);//List files and directories inside $rooms
    
foreach ($files as $user){
    if ($user == '.' || $user == '..') continue;
        $handle = fopen("$room/$user",'r');

为了帮助我在下面包含完整的循环 $files = scandir($room);//列出$rooms里面的文件和目录

foreach ($files as $user){
    if ($user == '.' || $user == '..') continue;
        $handle = fopen("$room/$user",'r');
        $time = fread($handle, filesize("$room/$user"));
        fclose($handle);
    if ((time()-$time)>20) unlink("$room/$user");
}

【问题讨论】:

  • 在 PHP 中?没有。对于 linux 文件系统? . 是当前目录,.. 是父目录。
  • 似乎文件系统被用作数据库。查看php.net/manual/en/function.scandir.php 上的第一个用户贡献,您根本不需要那个条件。
  • 我直到现在才知道,如果我找不到 php 问题的答案,我应该考虑尝试搜索相同的指令作为可能的 Linux 问题。使用 Linux 关键字而不是 Php 词进行搜索。即使它已经作为 Linux 问题得到回答,我也会离开这个问题。

标签: php file foreach directory


【解决方案1】:

在 linux 上,如果您列出任何目录,列表将始终包含伪文件 ...。单个. 是当前目录,因此您可以例如执行ls .,它将列出当前目录的内容。两个点.. 的意思是'这个上面的目录',所以ls .. 会列出父目录的内容。

此脚本忽略这些伪/假文件,因为它只对真实文件感兴趣

【讨论】:

    猜你喜欢
    • 2013-12-01
    • 2011-05-31
    • 2011-11-16
    • 2013-07-25
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2016-10-22
    相关资源
    最近更新 更多