Let’s try to convert each data type to integer-
Null to Integer
<?php
var_dump((int)null);
PHPOutput:
int(0)
PlaintextBoolean to Integer
<?php
var_dump((int) true);
var_dump((int) false);
PHPOutput:
int(1)
int(0)
PlaintextFloat to Integer
<?php
var_dump((int) 123.45); // Output: int(123)
var_dump((int) -123.99); // Output: int(-123)
var_dump((int) 0.5); // Output: int(0)
var_dump((int) -0.5); // Output: int(0)
PHPOutput:
int(123)
int(-123)
int(0)
int(0)
PlaintextString to Integer
<?php
var_dump((int) "123");
var_dump((int) "-123");
var_dump((int) "0123");
var_dump((int) "+123");
PHPOutput:
int(123)
int(-123)
int(123)
int(123)
PlaintextIf the string contains non-numeric characters, then conversion to integer follows these rules-
var_dump((int) "123abc"); // Output: (int)123
var_dump((int) "abc123"); // Output: (int)0
var_dump((int) " 123abc"); // Output: (int)123
var_dump((int) " abc123"); // Output: (int)0
var_dump((int) ""); // Output: (int)0
PHPOutput:
int(123)
int(0)
int(123)
int(0)
int(0)
PlaintextHex and binary literals are not detected from a string, if converted to integer-
<?php
var_dump((int) "0x1A9"); // Output: int(0)
var_dump((int) "0b1010"); // Output: int(0)
var_dump((int) "0876"); // Output: int(876)
PHPOutput:
int(0)
int(0)
int(876)
PlaintextArray to Integer
<?php
var_dump((int) []); // Output: int(0)
var_dump((int) [1, 2, 3,]); // Output: int(1)
PHPOutput:
int(0)
int(1)
PlaintextObject to Integer
<?php
class BigBoxCode {
}
$obj = new BigBoxCode();
var_dump((int) $obj);
PHPOutput:
Warning: Object of class BigBoxCode could not be converted to int in data_type.php on line 8
int(1)
Plaintext<?php
class BigBoxCode
{
public function __toString()
{
return "999";
}
}
$obj = new BigBoxCode();
var_dump((int) (string)$obj);
PHPOutput:
int(999)
PlaintextResource to Integer
<?php
$handle = fopen("sample.txt", "r");
var_dump((int) $handle);
fclose($handle);
PHPOutput:
int(5)
PlaintextINF to Integer
<?php
var_dump(INF, (int) INF); // Output: int(0)
var_dump(INF, (int) -INF); // Output: int(0)
PHPOutput:
float(INF)
int(0)
float(INF)
int(0)
PlaintextNAN to Integer
<?php
var_dump(NAN, (int) NAN); // Output: int(0)
PHPOutput:
float(NAN)
int(0)
PlaintextJSON to Integer
<?php
$json = json_decode('999');
var_dump((int) $json); // Output: int(999)
$json = json_decode('true');
var_dump((int) $json); // Output: int(1)
$json = json_decode('null');
var_dump((int) $json); // Output: int(0)
$json = json_decode('[1, 2, 3]');
var_dump((int) $json); // Output: int(1)
$json = json_decode('[]]');
var_dump((int) $json); // Output: int(0)
PHPOutput:
int(999)
int(1)
int(0)
int(1)
int(0)
Plaintext