Как правильно привести значения в массиве к типу int?
На счет правильности или неправильности тут вопрос мне кажется ставить не совсем корректно. Как вам удобнее, так и делайте. Тут больше вопрос в том - какой вообще по сути смысл приводить значение к (string) в вашем первом примере? При нестрогом сравнение (то есть без третьего параметра true) это по сути будет сделано автоматически. Я лично в такой ситуации вообще не вижу смысла от строго сравнения типов. Просто то преобразование типов, которое вы хотите делать, будет сделано автоматически при нестрогом сравнение самим интерпретатором.
Перебор массива можно также сделать с помощью array_map:$arr = array_map(function($n) {
    return (int)$n;
}, $arr);
Ваш вариант вполне неплохой, разве что теперь отпадает вообще надобность проверять типизацию в in_array, Вы же сами весь массив привели к int :)
А вообще, какой смысл здесь в проверке со строгой типизацией?.. Конкретно в данном случае, какая разница между 1 и "1"? Я предполагаю, что тут это излишне.