I can't say I have any hard-and-fast rules, but in general...
If a parameter must be an array, I'll do an is_array() on it, but generally won't go as far as checking each element.
If a parameter must be an integer or a float, I'll cast it to one with (int) or (float), then do any range checking after that.
If it must be a resource ID, I'll check that with is_resource().
If it must be an object, I'll use type hinting.
Other than that, I generally let PHP's loose typing do its thing.