从本节开始,我将陆续介绍PHP5的内部函数,这也是PHP的精髓所在。由于知识有限,不能详尽说明,如果想要更深入的学习,可以去PHP的官方网站下载使用手册(建议下载英文版)。
一、empty() isset() unset()
1、bool empty(mixed var)
该函数用来判断一个变量是否为空,如果为空则返回true,否则返回false。以下值会被判为空:""(空字符串)、0、"0"、null、false、array()(空数组)和未定义、未赋值的变量。
2、bool isset(mixed var [,mixed var [, ...]])
该函数的功能与empty()相反,用来判断一个或多个变量是否非空。如果都非空则返回true,如果有一个为空则返回false。其判断是否为空的标准同empty();
3、void unset(mixed var [,mixed var [,mixed ...]])
将一个或多个变量设置为空。
二、判断、获取变量的数据类型
1、bool is_numeric(mixed var)
判断变量var是否为数字,是则返回true,不是则返回false。以下函数的用法类似:
is_int() is_integer() is_long() 整数
is_float() is_double() is_real() 浮点数
is_string() 字符串
is_bool() 布尔值
is_null() NULL型
is_array() 数组
2、string gettype(mixed var)
返回变量var的数据类型,是以下值之一:"boolean"、"integer"、"string"、"array"、"object"、"NULL"、"unknown type"。
二、转换、设置数据类型
数据类型的转换有多种方式。一是让PHP进行内部转换,比如$var=1+"1";结果$var=2,其中的字符串"1"就被自动转换成了整数1。二是进行强制转换,如$var=1+(int)"1";结果$var=2,其中字符串"1"被强制转换成整数1。同样的关键字有(float)、(string)、(bool)等。三则是通过PHP的内部函数来转换了。
1、int intval(mixed var [,int base])
将var转换成整数。如果var都是数字,则能顺利转换;如果开头是数字,后面含有字母,则从字母开始处忽略,如"123abc"将转换为123;如果开头是字母,则返回0。如果var是字符串,则base可以设置该数的进制,并返回其十进制的整数。如intval("100",2)的值为4;如果var不是字符串,那么base将不起作用。
2、float floatval(mixed var):和(float)的效果完全一样。而doubleval()则等价于floatval()。
3、string strval(mixed var):和(string)的效果完全一样。
4、bool settype(mixed &var,string type)
将变量var的数据类型转换为由type指定的类型,若成功则返回true,失败则返回false。其中,type的值可以是:"boolean"(或"bool")、"integer"(或"int")、"float"、"string"、"array"、"object"、null"。
三、print_r() var_dump() var_export()
这三个函数都是用来输出变量的详细信息的,对数组、对象等类型来说尤为实用。
1、bool print_r(mixed expression [,bool return])
输出expression的值,如果expression是int、float和string的话,将输出它们本身(同print expression);如果是数或对象,则输出详细信息。输出成功则返回true,否则为false。如果return设置为true,则函数的返回值将是要输出的内容,且这些内容不会被输出到网页中。
2、void var_dump(mixed expression [,mixed expression [,...]])
输出多个expression,区别见下面的例子。
3、mixed var_export(mixed expression [,bool return])
该函数输出的expression将是合法的PHP代码。如果return设置为true,则函数的返回值将是要输出的内容,且这些内容不会被输出到网页中。如:$arrexp=array(1,2,3);$arr=var_export($arrexp,true);相当于执行$arr=array(1,2,3);
下面的例子可以看出三者的区别:
$arr=array(0,"var","k1"=>"v1",array("str",1));
<table width="100%" border="1">
<tr><th width="33%">print_r($arr)</th><th width="33%">var_dump($arr)</th><th>var_export($arr)</th></tr>
<tr><td valign="top"><pre>
Array
(
[0] => 0
[1] => var
[k1] => v1
[2] => Array
(
[0] => str
[1] => 1
)
)
</pre></td><td valign="top"><pre>
array(4) {
[0]=>
int(0)
[1]=>
string(3) "var"
["k1"]=>
string(2) "v1"
[2]=>
array(2) {
[0]=>
string(3) "str"
[1]=>
int(1)
}
}
</pre></td><td valign="top"><pre>
array (
0 => 0,
1 => 'var',
'k1' => 'v1',
2 =>
array (
0 => 'str',
1 => 1,
),
)
</pre></td></tr>
</table>
五、string serialize(mixed value)
mixed unserialize(string str)
serialize函数将value转换成一个特殊的字符串,并可用unserialize函数将其转换回来。也就是说,$var和unserialize(serialize($var))是完全等价的。这两个函数的用处就是可以将复杂的数据以字符串的形式保存,并不失真地转换回来。
六、bool import_request_variables(string types [,string prefix])
该函数的功能是有选择地将$_GET、$_POST和$_COOKIE数组中的变量提取出来,使之成为全局变量。types可以设置要提取的数组和优先权。可以是G、P、C或是它们的组合,且不区分大小写。如"gp"就是提取$_GET和$_POST中的所有变量,如果有重复,则以$_POST为准。prefix用来设置提取出的变量的前缀。比如有$_POST['username']="jerry";,使用import_request_variables("p","post_");则post_username="jerry";
七、array get_defined_vars(void):将所有已定义的变量组织成数组返回。
<?php
$b = array(1, 1, 2, 3, 5, 8);
$arr = get_defined_vars();
print_r($arr["b"]);// print $b
print_r($arr["_SERVER"]);// print all the server vars
?>