使用glob和array_slice

时间:2018-06-11 14:47:34

标签: php arrays glob

这必须很简单:我使用glob来构建一个指向目录中所有文件的链接列表(即index.php,somefile.php,someotherfile.php),但是我需要排除index.php之前的文件名/路径array_slice

由于某些原因,在这两个示例中,我可以在index.php之后排除array_alice,但之前不能排除index.php。我做错了什么?

这不会删除文件名/路径chdir('/dir/tree/'); foreach (glob("*.php") as $path) { $files[$path] = filemtime($path); } arsort($files); if($path != 'index.php') { foreach (array_slice($files, 0, 3) as $path => $timestamp) { print '<a href="'. $path .'">'. $path .'</a><br />'; } }

index.php

这会删除chdir('/dir/tree/'); foreach (glob("*.php") as $path) { $files[$path] = filemtime($path); } arsort($files); foreach (array_slice($files, 0, 3) as $path => $timestamp) { if($path != 'index.php') { print '<a href="'. $path .'">'. $path .'</a><br />'; } } ,但它位于array_alice之后,因此我会打印两个链接而不是三个:

wsl

1 个答案:

答案 0 :(得分:1)

你正在循环检查。

<php
foreach (glob("*.php") as $path) {
//---------------------------^
    $files[$path] = filemtime($path);
}
arsort($files);

if($path != 'index.php') {}
//---^

将它放在你的循环中:

foreach (glob("*.php") as $path) {
    if($path == 'index.php') {
        continue;
    }
    $files[$path] = filemtime($path);
}