Ось функція, яку я написав для спрощення речей для себе:
Він також повертає скорочені версії boolean, integer, double та real.
function type($mixed, $parseNumeric = false)
{
if ($parseNumeric && is_numeric($mixed)) {
//Set type to relevant numeric format
$mixed += 0;
}
$t = gettype($mixed);
switch($t) {
case 'boolean': return 'bool'; //shorthand
case 'integer': return 'int'; //shorthand
case 'double': case 'real': return 'float'; //equivalent for all intents and purposes
default: return $t;
}
}
Тип виклику з parseNumeric, встановленим у true, перетворить числові рядки перед перевіркою типу.
Таким чином:
type ("5", true) поверне int
type ("3.7", правда) повернеться з плаванням
type ("500") поверне рядок
Будьте обережні, оскільки це різновид помилкового методу перевірки, і ваша фактична змінна все ще буде рядком. Вам потрібно буде перетворити фактичну змінну у правильний тип, якщо потрібно. Мені просто знадобилося, щоб перевірити, чи повинна база даних завантажувати ідентифікатор елемента або псевдонім, таким чином, не матиме ніяких несподіваних ефектів, оскільки він так чи інакше буде проаналізований як рядок під час виконання.
Редагувати
Якщо ви хочете виявити, чи є об'єктами функції, додайте цей випадок до комутатора:
case 'object': return is_callable($mixed)?'function':'object';