2017-01-31 3 views
0

Мне нужно создать подпапки для большого архива изображений. Я в настоящее время использую этот подходКак создать иерархическую папку из целого числа в PHP?

$image_id = 1234567; 
$id = sprintf('%08d', $image_id); 
$a = substr($id,0,2); 
$b = substr($id,2,2); 
$c = substr($id,4,2); 
$folder = "$a/$b/$c"; 
$file = "$folder/$image_id.jpg"; 

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

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

ответ

2

Если вы хотите сохранить такую ​​же структуру папок, я не уверен, если это более эффективно, но это немного более элегантно:

$image_id = 1234567; 
$id = sprintf('%08d', $image_id); 
$folder = implode('/', (str_split($id, 2))); 
$file = "$folder/$image_id.jpg"; 

Это не должно иметь большое сопротивление на производительности , но он немного медленнее, чем размещение всех файлов в одной папке или сохранение полного пути к файлу вместе с его идентификатором.

+0

Вы правы, но это более элегантно, я думаю, что создание массива, а затем 'implode' в PHP может быть не в пользу производительности. Однако я могу изменить структуру папок. – Googlebot