Skip to content

Instantly share code, notes, and snippets.

@max-dark
Created July 1, 2016 20:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save max-dark/6d3c49ea68345a23f3fd9d8766241ff8 to your computer and use it in GitHub Desktop.
Save max-dark/6d3c49ea68345a23f3fd9d8766241ff8 to your computer and use it in GitHub Desktop.
Функция-генератор для однообразного перебора загруженных файлов
<?php
/**
* Функция-генератор для однообразного перебора загруженных файлов
* Системные требования
* PHP >= 5.5.0
* @link http://php.net/manual/ru/language.generators.php
*/
/**
* Генератор для однообразного перебора загруженных файлов
* @return Generator
*/
function Uploads() {
foreach ($_FILES as $id => $values) {
if (is_array($values['name'])) {
// перебор файлов, переданных через input с name,
// объявленными как массив(name="input_name[]")
foreach (array_keys($values['name']) as $key) {
$file = [
'id' => "{$id}_{$key}",
'name' => $values['name'][$key],
'type' => $values['type'][$key],
'size' => $values['size'][$key],
'error' => $values['error'][$key],
'tmp_name' => $values['tmp_name'][$key],
];
yield $file;
}
}
else {
// обычный input
$file = $values;
$file['id'] = $id;
yield $file;
}
}
}
// Пример использования
foreach (Uploads() as $file) {
print_r($file);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment