array_key_exists() and isset() both look at the array's key, which *is* the hash-table lookup. It's wicked fast: probably the fastest thing you can do with an array in PHP.
in_array() looks in the array's *values*. These are *not* in a hash-table and is therefore much much much slower.
Wade, who is paid to know this stuff.