İşte işleri basitleştirmek için yazdığım bir fonksiyon:
Ayrıca boolean, integer, double ve real'in kısa versiyonlarını döndürür.
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 öğesi true değerine ayarlandığında çağrı türü, türü denetlemeden önce sayısal dizeleri dönüştürür.
Böylece:
type ("5", true) int döndürür
type ("3.7", true) float döndürür
type ("500") dize döndürür
Bu bir tür yanlış kontrol yöntemi olduğundan ve gerçek değişkeniniz hala bir dize olacağından dikkatli olun. Gerekirse gerçek değişkeni doğru türe dönüştürmeniz gerekir. Ben sadece veritabanı bir öğe kimliği veya takma yük gerekir, bu yüzden zaten çalışma zamanında dize olarak ayrıştırılacak bu nedenle beklenmedik etkileri olmayan kontrol etmek gerekiyordu.
Düzenle
Nesnelerin işlev olup olmadığını tespit etmek istiyorsanız, bu durumu anahtara ekleyin:
case 'object': return is_callable($mixed)?'function':'object';