сортировка файлов для создания объекта из всех файлов

0

Я пытаюсь получить все изображения из их папок в директории и сделать их объекту. имена папок - это идентификатор продукта, а имена файлов - просто цифры.

У меня этот код

            $dir = "./public/img/product/";
            $scandir = scandir($dir);
            $opendir  = opendir($dir);
            $allfiles = new stdClass();

            while (false !== ($dirname = readdir($opendir))) 
            {
                if($dirname != "." && $dirname != "..")
                {
                        $allfiles->$dirname = $dirname;

                }

            }


            foreach($allfiles as $folder)
            {
                    $dir = "./public/img/product/".$folder;
                    $opendir  = opendir($dir);          
                    while (false !== ($filename = readdir($opendir))) 
                {
                    if($filename != "." && $filename != "..")
                    {
                        echo 'folder: '.$folder . ', filname: '.$filename.' ';
                    }
                }
//      

            }

что делает

 folder: 767, filname: 1.jpg folder: 767, filname: 2.jpg folder: 767, filname: 3.jpg folder: 768, filname: 1.jpg folder: 768, filname: 2.jpg folder: 769, filname: 1.jpg folder: 769, filname: 2.jpg folder: 769, filname: 3.jpg folder: 769..

Я хочу что-то вроде этого, я думаю..

{files:{767:[ 1.jpg, 2.jpg ],768:[ 1.jpg, 2.jpg ]}}

Спасибо.

Теги:
object
opendir

1 ответ

0

Вот решение

        $dir = "./public/img/product/";
        $scandir = scandir($dir);
        $opendir  = opendir($dir);
        $allfiles = new stdClass();
        $files = array();

        while (false !== ($dirname = readdir($opendir))) 
        {
            if($dirname != "." && $dirname != "..")
            {
                    $allfiles->$dirname = $dirname;

            }

        }


        foreach($allfiles as $folder)
        {
                $dir = "./public/img/product/".$folder;
                $opendir  = opendir($dir);          
                while (false !== ($filename = readdir($opendir))) 
            {
                if($filename != "." && $filename != "..")
                {
                    $files[$folder][] = $filename;
                }
            }

        }

        ksort($files);
        foreach($files as $index => $folder){
            $files[$index] = sort($folder);
        }

        echo json_encode($files);

Ещё вопросы

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