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