Удалить элемент из массива $ _FILES upload - PullRequest
0 голосов
/ 18 декабря 2011

У меня есть скрипт, где пользователи могут загружать несколько файлов (макс. 8).HTML генерируется фрагментом PHP:

$max_no_img=8;  
for($i=1; $i<=$max_no_img; $i++){
    <div class='photo photo$i'>
        <div class='new_label'>
        Foto $i:
        </div>
        <div class='new_input'>
        <input type='file' name='images[]' />
        </div>
    </div>";
}

Таким образом, массив images[] состоит из 8 значений.Однако каждый раз, когда пользователь отправляет свою форму, форма генерирует массив из 8 элементов и, таким образом, вставляет 8 значений в базу данных (независимо от того, пусты они или нет).

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

Массив $_FILES состоит из 4 вещей.name, tmp_name, error и size.Как мне получить его, чтобы полный элемент (скажем, images[0]) не был удален из массива, чтобы я мог продолжить с элементами, которые на самом деле несут значение.

Я пробовал это, но безрезультатно ...

unset($_FILES['images'][0])

и

unset($_FILES['images']['name'][0])
unset($_FILES['images']['tmp_name'][0])
unset($_FILES['images']['error'][0])
unset($_FILES['images']['size'][0])

Любой совет, как сбросить значение из $ _FILES-arry?

Ответы [ 2 ]

2 голосов
/ 18 декабря 2011

Вы можете просто игнорировать их вместо обработки или сброса каких-либо элементов:

if (!empty($_FILES['images'])) {
    for ($i = 0; $i < count($_FILES['images']['name']); $i++) {
        if (empty($_FILES['images']['name'][$i])) {
            // This item is empty
            echo "Item $i references an empty field.\n";
            continue;
        }

        echo "Item $i is a valid file.\n";
    }
}
2 голосов
/ 18 декабря 2011

Вам на самом деле не нужно unset никаких предметов.Просто пропустите элементы, которые не соответствуют загруженному файлу:

for($i=1; $i <= $max_no_img; $i++) {
    if(empty($_FILES['images']['name'][$i])) {
        continue; // that's all it takes
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...