首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较值和检查重复项

比较值和检查重复项
EN

Stack Overflow用户
提问于 2016-02-07 13:20:23
回答 2查看 38关注 0票数 0

我面临一个问题,我希望有一个输出来告诉我哪些文件具有相同的inode,例如"filename1和filename2是相同的“。这将是如果两个节点是相同的,但我不知道如何应用这个。我目前正在尝试创建一个数组,其中键是文件的名称,值是inode,但它不起作用(var_dump只是给了我一个空数组)。

如果我以某种方式使数组工作,那么我猜我将需要以某种方式对其进行增量,并检查两个值是否相同,然后打印它们的键。

代码语言:javascript
复制
    global $hardlink;
    $hardlink = [];

    foreach (glob("*") as $filename) {
      file_info($filename);
      print_file_info();
    }

    var_dump($hardlink);
    exit(0);

    function file_info($name) {
      global $info;                
        $info[0] = $name;          // the file name
        $info[1] = filesize($name);  // file size
        $info[2] = filetype($name); // file type

        $cwd = getcwd();
        $path = "$cwd/$name";

        if(is_link($path)) {
            $link = readlink($path);
            $info[3] = "-> $link";
        } else {
            $info[3] = "No link";
        }

        $lstat = lstat($path);
        $info[4] = $lstat[1];

        $hardlink[$info[0]] = $info[4];
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-07 13:27:55

尝试将$hardlink添加到函数中的全局行:

代码语言:javascript
复制
function file_info($name) {
    global $info, $hardlink;
票数 0
EN

Stack Overflow用户

发布于 2016-02-07 13:28:03

您的变量范围有一个普遍的问题。这是你不应该依赖全球的众多原因之一。

$hardlink是函数file_info()中的局部变量,而不是全局变量,因此您所做的任何更改都不会出现在全局范围内。

要更好地解决此问题,请去掉全局声明并传递一个引用。

代码语言:javascript
复制
$hardlink = [];

foreach (glob("*") as $filename) {
  file_info($filename, $hardlink);
  print_file_info();
}

function file_info($name, &$hardlink) {
    $info[0] = $name;          // the file name
    $info[1] = filesize($name);  // file size
    $info[2] = filetype($name); // file type

    $cwd = getcwd();
    $path = "$cwd/$name";

    if(is_link($path)) {
        $link = readlink($path);
        $info[3] = "-> $link";
    } else {
        $info[3] = "No link";
    }

    $lstat = lstat($path);
    $info[4] = $lstat[1];

    $hardlink[$info[0]] = $info[4];
}

注意,我将$hardlink定义为file_info函数的第二个参数中的引用,方法是以&作为前缀。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35253988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档