Bir daha tercih veya diğer üzerinde daha iyi bir performans sergiliyor?
is_int()
returns true if the argument is an integer type, ctype_digit()
a> bir dize argüman alır ve dize tüm karakterler rakam ise true döndürür.
Example:
┌──────────┬───────────┬────────────────┐
│ │ is_int: │ ctype_digit: │
├──────────┼───────────┼────────────────┤
│ 123 │ true │ false │
├──────────┼───────────┼────────────────┤
│ 12.3 │ false │ false │
├──────────┼───────────┼────────────────┤
│ "123" │ false │ true │
├──────────┼───────────┼────────────────┤
│ "12.3" │ false │ false │
└──────────┴───────────┴────────────────┘
ctype not zaman return false tamsayı türüne bağlıdır.
foreach(range(-1000 , 1000)as $num){
if(ctype_digit($num)){
echo $num . ", ";
}
}
Aşağıdaki tamsayı tip numarası için true döndüren ctype_digit.
-78,-77,-71,48,49,50,51,52,53,54,55,56,57,178,179,185, 256,257,258,259,260,261,262,263,264,265,266,267,268,269,270 to 1000
the base practice is to case every number to string e.q. strval($num) or (String) $num in this case negative value (-78) will always return false.
is_int will return you true on int type value between -2147483647 to 2147483647.
any value exceed that number will return you false presuming it is running on 32bits system.
on 64bits it can go up to range of -9223372036854775807 to 9223372036854775807
in term of performance personally very hard to say. ctype_digit maybe faster than is_int but if you have to cast every value to string performance is reduced overall.
Tamsayı aralığı negatif aralıkta veya 0 ila 47 veya 58 ile 255 arasında ise ctype_digit false döndürür. Aşağıdaki parçacığını kullanarak ctype_digit davranışlarını kontrol edebilirsiniz.
setlocale(LC_ALL, 'en_US.UTF-8');
var_dump(
true === array_every(range(-1000, -1), 'ctype_digit_returns_false'),
true === array_every(range(0, 47), 'ctype_digit_returns_false'),
true === array_every(range(48, 57), 'ctype_digit_returns_true'),
true === array_every(range(58, 255), 'ctype_digit_returns_false'),
true === array_every(range(256, 1000), 'ctype_digit_returns_true')
);
// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/every
function array_every(array $array, $callable)
{
$count = count($array);
for ($i = 0; $i < $count; $i +=1) {
if (!$callable($array[$i])) {
return false;
}
}
return true;
}
function ctype_digit_returns_true($v)
{
return true === ctype_digit($v);
}
function ctype_digit_returns_false($v)
{
return false === ctype_digit($v);
}