Перезаписать вывод foreach, если существует повторяющееся значение

0

У меня есть папка на сервере, m выборка этих файлов, но некоторые трудности. мой код

$dir = 'F:\\wamp\www\files';
if (is_dir($dir)) {
if(($file = scandir($dir))!==false) {    

    foreach ($file as $key => $value) {                  
        $name = substr($value,0,-7);   

функция scandir() перенастраивает массив файлов, который возвращает список имен, т.е.

manoj254.txt
manoj234.txt
pooza145.txt
pooza452.txt
ramesh418.txt
ramesh231.txt  

и я удаляю расширение с помощью функции substr(), после этого вывод равен $ name

manoj
manoj
pooza
pooza
ramesh
ramesh

Но мне нужно выходное имя $ name, без duplicate.ie

manoj
pooza
ramesh

что означает удаление дубликатов... может ли любой орган помочь мне PLZ!

Теги:
string

1 ответ

0

Вы можете попробовать что-то вроде этого:

function getUniqueFileNames($path = null)
{
    if($path && $files = scandir($path)) { 
        $names = array_map(function($i) {
            if(is_file($i)) return str_replace(strrchr($i, '.'), '', $i);
        }, $files);
        return array_unique(array_filter($names));
    }
}

Используйте его так:

$filenames = getUniqueFileNames('F:\\wamp\www\files');

Есть и другие способы.

  • 0
    вывести пустой массив ()
  • 0
    Нет, это работает (проверено), просто убедитесь, что вы сделали это правильно.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню