数据变量之间的相互转换:
自动类型转换:
**注:**在PHP中,当不同的数据类型要进行计算时,会首先把不同的类型转换成相同的类型再进行计算,不会改变这些运算数本身的类型,只是改变被求值的方法。
通常只有4种标量类型(integer、float、string、boolean)才能使用自动类型转换。自动转换会遵循按数据长度增加的方向进行,以保证精确度不会降低。
强制类型转换:
和C语言的强制类型转换基本一致,在要转换的变量之前加上用括号括起来的目标类型,但也可以使用具体的转换函数,即是intval()、floatval()、和strval()等,又或是使用settype()函数转换类型。
eg:
$foo=10; //整型变量$foo
$bar=(boolean)$foo; //将整型变量$foo强行转换为布尔型
括号中允许有空格和制表符,允许的强制转换类型如下:
1、(int),(integer)转换为整型。
2、(bool),(boolean)转换为布尔型。
3、(float),(double),(real)转换为浮点型。
4、(string)转换为字符串。
5、(array)转换为数组。
6、(object)转换为对象。
关于函数:
转换函数的使用可以用于获取对应变量的一部分值:
$str="123.45abc"; //声明一个字符串
$int=intval($str); //获取变量$str的整型值123
$flo=floatval($str); //获取变量$str的浮点值123.45
$str=strval(123.45); //获取变量$flo的字符串值“123.45”
在上面的代码中,类型的强制转换都没有改变被转换变量原本的类型,而是将转换得到的新的数据赋值到一个新的变量上去,不会改变原变量的值以及类型。
如果要改变原变量的类型,就可以使用另外一个函数——settype()
eg:
$foo="5bar"; //为变量获取一个字符串的值
$bar=true; //为变量获取一个布尔值
settype($foo,"integer"); //将变量$foo的类型转换为整型,现在是5
settype($bar,"string"); //将变量$bar的类型转换为字符串,现在是"1"
**注意:**当整数转换为浮点型时,精度不会改变。但是当浮点型转换为整型时,会自动舍去小数部分,只保留整数部分。如果一个浮点数超过了整型数字的有效范围,转换结果将是不确定的。而当字符串转缓缓为数字的手,转换之后的数字将会是从字符串开始部分的数值型字符串,科学计数法表示的数字也是数值型字符串。NULL值转换为字符串,就是空字符" "。
变量类型的测试函数使用:
var_dump()函数是用来测试某个表达式的值以及类型的,具体格式如下:
$int=1;
var_dump($int); //会直接输出变量的类型和值
gettype()函数:
如果想要得到一个用于调试且易读懂的类型和表达方式,可以使用gettype()函数,但必须首先给这个函数传递一个变量,它将确定变量的类型,并且返回一个包含名称的字符串。如果变量的类型不是之前的八种变量之一的话,该函数就会返还一个"unknown type"。
is_type()函数:
如果要查看某个类型,不需要使用gettype()函数,而是使用is_type()函数,这个是PHP提供的一些特定测试函数之一。每个函数都使用一个变量作为其参数,并返回true或是false,格式如下:
is_bool():判断是否是布尔值。
is_int():判断是否是整型。
类似的格式还有:is_integer/long/float/double/real/string/array/object/resource/null(),基本就是看英文来识类别。
比较特殊的还有三个函数:
is_scalar():判断是否为一个标量,也就是一个整数、浮点数、布尔型或是字符串。
is_numeric():判断是否是任何类型的数字或是数字字符串。
is_callable():判断是否是有效的函数名。
以上两种函数的使用格式:
$bool=TRUE; //一个布尔型。
$int=12;
echo gettype($bool); //使用gettype()函数通过echo输出变量$bool的类型。
var_dump($bool); //使用var_dump()函数直接输出变量$bool的类型和值。
if(is_int($int)) //使用is_int()函数,通过条件判断,如果变量$int为整型,累加4.
{
$int+=4;
echo "Integer $int"; //打印输出。
}
HTML表单并不传递整数,浮点数或者是布尔值,它们只会传递字符串,想要检测一个字符串是不是数字,可以使用is_numeric()函数。
常量:
定义:
常量是一个简单值的标识符,如同其名称所暗示的,在脚本执行期间一个常量一旦被定义,就不能再改变或者是取消定义。
常量的作用域是全局的,可以在脚本的任何地方声明和访问到常量,这也是在应用上经常选择常量使用的主要原因。
常量和变量都是PHP存储单元,但是常量声明的类型只能是标量数据(boolean、integer、float、string)。
在新版本中不止标量,还有数组等等
不能在常量的前面加上$,否则会不被解析。
常量的定义和使用:
在PHP中,常量是通过define()函数来定义常量的。常量的命名与变量相似,也要遵循PHP的命名规则。常量默认和变量一样大小写敏感, 但不要在常量前面加上$符号。
define()函数的格式如下所示:
boolean define(string name,mixed value[,bool case_insensitive]); //常量定义函数。
以上函数中:
第一个参数(string name)为字符串类型的常量名。第二个参数(bool)为常量的值或是表达式。第三个参数(case_insensitive)是可选的,如果把第三个参数设置为TRUE(即是说:case_insensitive=TRUE),则常数将会定义为不区分大小写。预设是区分大小写的。
如果要检查是否定义了某个常量,可以使用defined()函数。
define("CON_INT",100); //声明一个常量,名为CON_INT,值为整型100
echo CON_INT; //使用常量,输出整型值100。
define("FLO",99.99); //声明一个名为FLO的常量,值为浮点数99.99。
echo FLO; //使用常量,输出浮点值99.99。
define("CONSTANT","Hello world."); //声明一个名为CONSTANT的字符串常量。
echo CONSTANT; //输出字符串
echo Constant; //直接输出Constant,并且返还一个报错信息
define("GREETING","hello",true); //声明一个名为GREETING的字符串常量
echo GREETING; //会输出字符串hello。
echo Greeting; //同样会输出字符串hello,因为在定义常量的时候没有要求对大小写敏感。
if(defined('CONSTANT')) //使用defined()函数来判断函数是否存在,如果存在就会输出下方变量。
{
echo CONSTANT;
}
新版本PHP中对于常量的定义方式:
在PHP5.3.0后,可以使用const这个关键字在类的外部定义常量。
使用格式如下:
define("ONE",1); //定义一个名为ONE的整型常量。
const TWO=ONE*2; //使用const关键字用一个表达式来声明一个变量
在PHP7以后的版本可以使用define()函数来定义一个字符类型的常量,在PHP5.6中只能够通过const语句来确定一个数组常量,而在之前的版本不能将常量设置为数组类型。
const ARRAY=['a','b']; //使用const语句声明一个数组常量。
define("BRR",['a','b']); //使用define()函数来声明一个数组常量。
echo ARRAY[0]; //输出该数组中的第一个量。
标签:转换,常量,函数,字符串,类型,PHP,变量
来源: https://blog.csdn.net/Holl0w_By/article/details/113839562