Ответ 1
Это текущие (.
) и родительские (..
) каталоги. Они присутствуют во всех каталогах и используются для обозначения самого каталога и его прямого родителя.
Почему это когда я использую scandir() Я получаю периоды в начале массива?
Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)
Array
(
[0] => somedir
[1] => foo.txt
[2] => bar.php
[3] => ..
[4] => .
)
Это текущие (.
) и родительские (..
) каталоги. Они присутствуют во всех каталогах и используются для обозначения самого каталога и его прямого родителя.
В каждом списке каталогов есть две записи:
.
относится к текущему каталогу..
относится к родительскому каталогу (или к корню, если текущий каталог является корневым)Вы можете удалить их из результатов, отфильтровывая их из результатов scandir:
$allFiles = scandir(__DIR__); // Or any other directory
$files = array_diff($allFiles, array('.', '..'));
В соглашении Unix. является ссылкой на текущий каталог, а.. является ссылкой на родительский каталог. Оба они существуют как файл в индексе каталога.
Чтобы удалить .
и ..
из scandir
, используйте эту функцию:
function scandir1($dir)
{
return array_values(array_diff(scandir($dir), array('..', '.')));
}
Команда array_values
повторно индексирует массив так, чтобы он начинался с 0. Если вам не нужна переиндексация массива, принятый ответ будет работать нормально. Просто: array_diff(scandir($dir), array('..', '.'))
.