The purpose of a salt is to make it difficult to match the hash. That being said this depends of the hash you're using and how prone it is to collisions. Bcrypt is pretty strong but it has its drawbacks.
This code should make a 23 character salt according to the manual.
printf("uniqid('', true): %s\r\n", uniqid('', true));
This gets you (256 bits) 64 digits:
hash("sha256",time());
Check-out crypt as well.
Using a SALT is always good because it makes it harder to find the original password (reverse engineer). That doesn't mean they can't get a hash collision that matches and allows them access if you're doing a match against a database. The longer the hash and the more character potential per position makes a collision that much harder and your system stronger (in theory).