Erick,
Well....... technically what PHP calls arrays are not really arrays since real arrays can only contain one datatype (int, char, string, etc.). They are really structures since they can hold different datatypes. However, in this case that's spliting hairs and it doesn't answer your question🙂 The $HTTP_POST_FILES var is a proper array, to be more specific it's a proper 2-dimensional array (by default). The four property key's it contains are in the second tier, which is why sizeof() or count() will always return a value of one. BTW, the count returned by both those functions starts at 1, not 0. Now let's assume your form's file element is named "file", for example. The resulting $HTTP_POST_FILES array will have the following structure:
$HTTP_POST_FILES[file][name]
$HTTP_POST_FILES[file][type]
$HTTP_POST_FILES[file][tmp_name]
$HTTP_POST_FILES[file][size]
Since the form field name is always used as the first tier key, this allows for processing of multiple file elements in a form.
eg.
$HTTP_POST_FILES[file][name]
$HTTP_POST_FILES[file][type]
$HTTP_POST_FILES[file][tmp_name]
$HTTP_POST_FILES[file][size]
$HTTP_POST_FILES[file2][name]
$HTTP_POST_FILES[file2][type]
$HTTP_POST_FILES[file2][tmp_name]
$HTTP_POST_FILES[file2][size]
Things get a bit more confusing if you setup your form field as an array (to allow for easier batch data validation, variable passing, etc.). Let's assume that your form's elements are actually creating an array called myForm, and your file element is myForm[file]. In this case the $HTTP_POST_FILES array becomes a 3-dimensional array like so:
$HTTP_POST_FILES[myForm][file][name]
$HTTP_POST_FILES[myForm][file][type]
$HTTP_POST_FILES[myForm][file][tmp_name]
$HTTP_POST_FILES[myForm][file][size]
You can keep expanding out this model ad nosium, but hopefully the above is enough to let you catch my drift. HTH!!
Cheers,
Geoff A. Virgo