Умное определение типа переменной

Приветствую. Понадобилась возможность, подразумевающая определение типа. Такое умеет gettype(), но необходимо, чтобы она определяла подобным образом:

$var[0] = 5
$var[1] = '5';
$var[2] = '5.5';
$var[3] = '5,5';

echo smartType($var[0]); // integer
echo smartType($var[1]); // integer
echo smartType($var[2]); // double
echo smartType($var[3]); // string


Просто подумал, прежде чем писать свою реализацию спросить у людей, чтобы не пришлось изобретать лишний велосипед, если что. В случае, если плохо мучал гугл – прошу прощения, был бы благодарен ссылкам.
  • Вопрос задан
  • 3676 просмотров
Пригласить эксперта
Ответы на вопрос 4
hell0w0rd
@hell0w0rd
Просто разработчик
А в чем сложность то?)
function smartType($var)
{
    $type = gettype($var);
    if ($type === 'string') {
        if ((string)intval($var) === $var) {
            return 'integer';
        } elseif ((string)floatval($var) === $var) {
            return 'double';
        } else {
            return 'string';
        }
    }

    return $type;
}

PS через регулярки такую задачу решать конечно оригинально)
Ответ написан
@xave
Пишите свою функцию. Если подобные велосипеды преследуют вас по всему проекту, то можно было бы использовать ЯП со статической типизацией, но здесь на ум приходит только всякий энтерпрайз с жавами и сишарпами.
Ответ написан
Комментировать
@edogs
Если чужой колхоз годится, то stackoverflow.com/questions/2690654/how-to-get-the-real-type-of-a-value-inside-string можно за базу взять, чутка ошибок поправить и типов добавить:)
А вообще для такой задачи лучше свой колхоз сделать, т.к. задача у Вас какая-то атипичная видимо.
Ответ написан
Комментировать
@egorinsk
Используйте is_numeric. И интуиция подсказывает мне, что если нужна такая функция, то код кривой и плохой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы