无法从scandir数组中删除“” /“ ..”

问题描述

我当时使用scandir将一些文件名放入数组中,然后尝试使用if stmt来切片“”。和“ ..”(如果存在),但是它们不起作用,因此我尝试仅在变量不是“ ..”或“。”的情况下回显图像。那没有用。下面的示例代码

if ($pages[$pageIndex] == "." || $pages[$pageIndex] == "..") {
  array_slice($pages,2);
  print_r($pages);
}
# And

while ($i < $pagesLength) {
  if ($pages[$pageIndex] != "." || $pages[$pageIndex] != "..") {
    echo "<img src='series/series_" . rawurlencode($_GET['series']) . "/series_" . rawurlencode($newLink) . "/" . rawurlencode($pages[$pageIndex]) . "'>";
    $pageIndex = $pageIndex + 1;
    $i++;
  }
}                            }

不管我做什么,他们都留下来了,我该如何摆脱它们?

数组内容

array contents

解决方法

使用从第2行开始的for循环跳过. / ..

for ($i = 2; $i <= $pagesLength; $i++) {
  // do something
}
,

去除任何隐藏文件的好方法是:

$pages = preg_grep('/^(?!\.{1,2}$)/',$pages);

另一种快速的方法是使用array_diff()

$pages = array_diff($pages,array('.','..'));