zip -r /tmp/foo/bar.zip /tmp/foo/* > /dev/null 2>&1
and the achieve is in this structure
/tmp
/foo
file1
file2
dir1/
file3
dir/2
file4
Why is /tmp
part of the structure?
It is because you tell it to do that ;-)
I would do something like this:
cd /tmp && zip -r /tmp/bar.zip ./foo/* >/dev/null 2>&1