1) Приведите код к стандарту
PSR-1 (отступы, именование функций и переменных).
2) Дайте осмысленные названия всем переменным, сейчас InArray_(), $th, $string и другие переменные могут быть понятны, если сесть и пошагово дебажить каждую строчку на реальных данных - это неправильно для дальнейшей поддержки кода. Если что-то тяжело переименовать - это сразу повод задуматься - правильно ли построен алгоритм решения задачи)
3) Мелочь, но не делайте так)
$r = ",".$r.",";
Если есть двойные кавычки в строке, то переменную можно писать внутри строки, профита от конкатенации нет.
UPD. Без этих исправлений сложно что-то говорить об эффективности решения