The correct solution is:
unset a; declare -a a while IFS= read -r -u3 -d $'\0' file; do a+=( "$file" ) # or however you want to process each file done 3< <(find /tmp -type f -print0) That's similar to what Greg's BashFAQ 020 explains in detail and this answer coversthis answer covers.
Has no problem with odd named files (that contain no NUL in the name), with spaces or new lines. And the result is set in an array, which makes it useful for further processing.