Aviso: argumento inválido fornecido para foreach () no php

Estou trabalhando para carregar um arquivo e, em seguida, enviá-lo para mim como anexo. Eu sou novo com o php, tentei procurar na web coisas e escrevi esse código.

 $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["documents"]["tmp_name"][$key]; $name = basename($_FILES["pictures"]["name"][$key]); $files[$x]=$name; $x++; move_uploaded_file($tmp_name, $uploaddir.$name); } } $path = $_SERVER['DOCUMENT_ROOT']; mail_attachment($files, $path, $mailto, $subject, $message); ?> 

Recebo um erro para o foreach:

  Warning: Invalid argument supplied for foreach() in /home/a4824849/public_html/PhpFile.php on line 88 Warning: Invalid argument supplied for foreach() in /home/a4824849/public_html/PhpFile.php on line 12 

O que poderia estar errado?

Foreach leva arrays e atribui cada valor da matriz ao varname que você define. Argumento inválido significa simplesmente que você não forneceu uma matriz válida.

Para l.12, significa simplesmente que você não passou uma matriz como o primeiro arg para sua function, que é devido à sua linha de erro 88.

Eu assumiria que seu problema é que você ainda não tentou fazer o upload de um arquivo e, portanto, $_FILES é indefinido. Na minha experiência de usar a variável $_FILES superglobal, você geralmente precisa carregar um arquivo através de uma forma de enctype multi-part/formdata . Para depurar e verificar se ele está definido, faça um var_dump or print_r em $_FILES antes do loop foreach . Como uma medida adicional de segurança, você pode querer envolver o referido loop e sua chamada para sua function mail_attachment em um if (isset($_FILES))

Espero que isto ajude