Convert a string to a number in PHP
This article demonstrates how to convert a numeric string to a number in PHP 8.
1. Using Casting
You can convert a string to a numeric type by explicitly casting the string. For example, the following casts a string to an integer:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php var_dump((int)'64'); // int(64) var_dump((int)'+64'); // int(64) var_dump((int)'-64'); // int(-64) var_dump((int)'064'); // int(64) var_dump((int)NULL); // int(0) var_dump((int)'3.14'); // int(3) var_dump((int)'+3.14'); // int(3) var_dump((int)'-3.14'); // int(-3) var_dump((int)'03.14'); // int(3) var_dump((int)'2e10'); // int(20000000000) var_dump((int)'10000000000000000000'); // int(9223372036854775807) ?> |
You can convert a numeric string to other primitive data types as well. For example, the following casts a string to a float:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php var_dump((float)'64'); // float(64) var_dump((float)'+64'); // float(64) var_dump((float)'-64'); // float(-64) var_dump((float)'064'); // float(64) var_dump((float)NULL); // float(0) var_dump((float)'3.14'); // float(3.14) var_dump((float)'+3.14'); // float(3.14) var_dump((float)'-3.14'); // float(-3.14) var_dump((float)'03.14'); // float(3.14) var_dump((float)'2e10'); // float(20000000000) var_dump((float)'10000000000000000000'); // float(1.0E+19) ?> |
2. Using + operator
A better option is to simply add zero to the string, which automatically converts the string to an int or float as appropriate. This eliminates the need to check if the string is an int or float before casting.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php var_dump('64' + 0); // int(64) var_dump('+64' + 0); // int(64) var_dump('-64' + 0); // int(-64) var_dump('064' + 0); // int(64) var_dump(NULL + 0); // int(0) var_dump('3.14' + 0); // float(3.14) var_dump('+3.14' + 0); // float(3.14) var_dump('-3.14' + 0); // float(-3.14) var_dump('03.14' + 0); // float(3.14) var_dump('2e10' + 0); // float(20000000000) var_dump('10000000000000000000' + 0); // float(1.0E+19) ?> |
Alternatively, you can use the identity arithmetic operator to convert a numeric string to an int or float. The expression +$s will convert the string $s to the corresponding int or float, as demonstrated below:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php var_dump(+'64'); // int(64) var_dump(+'+64'); // int(64) var_dump(+'-64'); // int(-64) var_dump(+'064'); // int(64) var_dump(+NULL); // int(0) var_dump(+'3.14'); // float(3.14) var_dump(+'+3.14'); // float(3.14) var_dump(+'-3.14'); // float(-3.14) var_dump(+'03.14'); // float(3.14) var_dump(+'2e10'); // float(20000000000) var_dump(+'10000000000000000000'); // float(1.0E+19) ?> |
3. Using intval() and floatval() function
PHP provides the built-in function intval() to get the integer value of the specified variable. You can convert a string to an int using this function, as follows:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php var_dump(intval('64')); // int(64) var_dump(intval('+64')); // int(64) var_dump(intval('-64')); // int(-64) var_dump(intval('064')); // int(64) var_dump(intval('3.14')); // int(3) var_dump(intval('+3.14')); // int(3) var_dump(intval('-3.14')); // int(-3) var_dump(intval('03.14')); // int(3) var_dump(intval('2e10')); // int(20000000000) var_dump(intval('10000000000000000000')); // int(9223372036854775807) var_dump(intval('64', 8)); // int(52) var_dump(intval(NULL)); // int(0) var_dump(intval('Pi3.14')); // int(0) var_dump(intval('3.14Pi')); // int(3) ?> |
To get the float value of the specified variable, you can use the built-in function floatval(). The following code uses it to convert a string to a float:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php var_dump(floatval('64')); // float(64) var_dump(floatval('+64')); // float(64) var_dump(floatval('-64')); // float(-64) var_dump(floatval('064')); // float(64) var_dump(floatval('3.14')); // float(3.14) var_dump(floatval('+3.14')); // float(3.14) var_dump(floatval('-3.14')); // float(-3.14) var_dump(floatval('03.14')); // float(3.14) var_dump(floatval('2e10')); // float(20000000000) var_dump(floatval('10000000000000000000')); // float(1.0E+19) var_dump(floatval(NULL)); // float(0) var_dump(floatval('Pi3.14')); // float(0) var_dump(floatval('3.14Pi')); // float(3.14) ?> |
It should be noted that both intval() and floatval() might perform slower than the casting and addition/identity arithmetic operators discussed before.
That’s all there is to converting a numeric string to a number in PHP 8.
Thanks for reading.
To share your code in the comments, please use our online compiler that supports C, C++, Java, Python, JavaScript, C#, PHP, and many more popular programming languages.
Like us? Refer us to your friends and support our growth. Happy coding :)