in_array()
использует линейный (O (n)) поиск, а не бинарный (O (log n)) поиск.
Если вы хотите O (log n) или лучше, я бы посоветовал вам либо поместить значения, которые вы хотите искать, в качестве ключей в массиве, либо создать структуру индекса, которая фактически делает то же самое.