Не могли бы вы объяснить, почему вы хотите это сделать? Домашнее задание? Есть много способов сделать это, и я не могу придумать ничего более сложного (и медленного), чем ваш. Попробуйте один из них:
function first($string) {
return (int)$string;
}
function first($string) {
return intval($string);
}
function first($string) {
return $string * 1;
}
function first($string) {
return $string + 0;
}
...
РЕДАКТИРОВАТЬ: перечитывая ваш вопрос, кажется, что может быть один или несколько .
(код ASCII 46), которые не являются десятичными точками во входной строке, и вы хотите узнать Первая часть как Int. В этом случае просто выполните:
function first($string) {
return (int)array_shift(explode('.',$string));
}