我遇到了一个问题,我想让输出告诉我哪些文件具有相同的inode,例如“filename1和filename2是相同的”。这将是如果两个inode是相同的,但我不知道如何应用这个。我目前正在尝试创建一个数组,其中的键是文件的名称,值是inode,但它不工作(var_dump只是给了我一个空的数组)。比较值和检查重复项
如果我以某种方式让数组工作,那么我猜我需要通过它以某种方式递增并检查两个值是否相同然后打印它们的键。
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];
}
工作,非常感谢。如果可能的话,你能建议我如何检查两个文件inode,并将这些键打印出相同的值吗?像array_intersect?因此,我可以输出“这些文件具有相同的inode:filename1,filename2” – Xylus
@Xylus,这超出了问题的范围,如果无法弄清楚,请打开一个新问题。 PHP手册有很多例子,但我希望你能阅读并理解我的答案。如果你想编写好的代码,你将完全避免使用全局变量。 – Devon
@Devon再次感谢。我会查看PHP手册并尝试自己找出问题所在。 – Xylus