PHP函数参考27-变量处理函数
-
boolval — 获取变量的布尔值
标量类型会被转化成布尔类型。一般是空、null、空数组、0、0.0等会返回false的布尔值。
-
debug_zval_dump — Dumps a string representation of an internal zend value to output
-
doubleval — floatval 的别名
-
empty — 检查一个变量是否为空
判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
当var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.
以下的东西被认为是空的:
- "” (空字符串)
- 0 (作为整数的0)
- 0.0 (作为浮点数的0)
- “0” (作为字符串的0)
- NULL
- FALSE
- array() (一个空数组)
- $var; (一个声明了,但是没有值的变量)
所以: empty() 本质上与 !isset($var) || $var == false 等价。
-
floatval — 获取变量的浮点值
var 可以是任何标量类型。你不能将 floatval() 用于数组或对象。
-
get_defined_vars — 返回由所有已定义变量所组成的数组
此函数返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。
$b = array(1,1,2,3,5,8); $arr = get_defined_vars(); // 打印 $b print_r($arr["b"]); // 打印 PHP 解释程序的路径(如果 PHP 作为 CGI 使用的话) // 例如:/usr/local/bin/php echo $arr["_"]; // 打印命令行参数(如果有的话) print_r($arr["argv"]); // 打印所有服务器变量 print_r($arr["_SERVER"]);
-
get_resource_type — 返回资源(resource)类型
此函数返回一个字符串,用于表示传递给它的 resource 的类型。如果参数不是合法的 resource,将产生错误。
$c = mysql_connect(); echo get_resource_type($c)."\n"; // 打印:mysql link $fp = fopen("foo","w"); echo get_resource_type($fp)."\n"; // 打印:file
-
gettype — 获取变量的类型
不要使用 gettype() 来测试某种类型,因为其返回的字符串在未来的版本中可能需要改变。此外,由于包含了字符串的比较,它的运行也是较慢的。
建议使用is_函数:is_array()、is_bool()、is_float()、is_integer()、is_null()、is_numeric()、is_object()、is_resource()、is_scalar() 和 is_string()。
-
intval — 获取变量的整数值
intval( mixed $var[, int $base = 10] ) : int
通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
注意:除非 var 是一个字符串,否则 base 不会起作用。
echo intval(42, 8); // 42 echo intval('42', 8); // 34
-
is_array — 检测变量是否是数组
-
is_bool — 检测变量是否是布尔型
-
is_callable — 检测参数是否为合法的可调用结构
-
is_countable — Verify that the contents of a variable is a countable value
-
is_double — is_float 的别名
-
is_float — 检测变量是否是浮点型
-
is_int — 检测变量是否是整数
若想测试一个变量是否是数字或数字字符串(如表单输入,它们通常为字符串),必须使用 is_numeric()。
-
is_integer — is_int 的别名
-
is_iterable — Verify that the contents of a variable is an iterable value
-
is_long — is_int 的别名
-
is_null — 检测变量是否为 NULL
-
is_numeric — 检测变量是否为数字或数字字符串
-
is_object — 检测变量是否是一个对象
-
is_real — is_float 的别名
-
is_resource — 检测变量是否为资源类型
-
is_scalar — 检测变量是否是一个标量
如果给出的变量参数 var 是一个标量,is_scalar() 返回 TRUE,否则返回 FALSE。
标量变量是指那些包含了 integer、float、string 或 boolean的变量,而 array、object 和 resource 则不是标量。
-
is_string — 检测变量是否是字符串
-
isset — 检测变量是否已设置并且非 NULL
isset说简单又不简单,很多注意细节:
- 检测变量是否设置,并且不是 NULL。
- 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。
- 若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。
- 同时要注意的是 null 字符("\0”)并不等同于 PHP 的 NULL 常量。
- 如果一次传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。
-
print_r — 以易于理解的格式打印变量。
print_r( mixed $expression[, bool $return = FALSE] ) : mixed
很多phper并不知道print_r可以返回值,想要获取 print_r() 输出的内容,使用 return 参数。当此参数为 TRUE,print_r() 会直接返回信息,而不是输出。
-
serialize — 产生一个可存储的值的表示
serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。 这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
但适合在php环境内传递序列串。
-
settype — 设置变量的类型
-
strval — 获取变量的字符串值
var 可以是任何标量类型。不能将 strval() 用于数组或对象。
-
unserialize — 从已存储的表示中创建 PHP 的值
如果传递的字符串不可解序列化,则返回 FALSE
-
unset — 释放给定的变量
unset( mixed $var[, mixed $...] ) : void
unset() 销毁指定的变量。
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
-
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
function destroy_foo() { global $foo; unset($foo); } $foo = 'bar'; destroy_foo(); echo $foo;//bar
-
如果您想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现
unset($GLOBALS['bar']);
-
如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
function foo(&$bar) { unset($bar); $bar = "blah"; } $bar = 'something'; echo "$bar\n";//something foo($bar); echo "$bar\n";//something
-
如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。
function foo() { static $bar; $bar++; echo "Before unset: $bar, "; unset($bar); $bar = 23; echo "after unset: $bar\n"; } foo();//Before unset: 1, after unset: 23 foo();//Before unset: 2, after unset: 23 foo();//Before unset: 3, after unset: 23
所以对于在局部中想unset一个全局(global引入)或外部变量(引用传递),并不会影响全局变量或外部变量。
// 销毁单个变量 unset ($foo); // 销毁单个数组元素 unset ($bar['quux']); // 销毁一个以上的变量 unset($foo1, $foo2, $foo3);
-
-
var_dump — 打印变量的相关信息
支持打印多个变量表达式。
-
var_export — 输出或返回一个变量的字符串表示
var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 函数类似,不同的是其返回的表示是合法的 PHP 代码。
常用于返回一个数组php代码,用于保存数组配置。
注意:var_export与print_r一样都有第二个参数,设置为true时,将不直接输出,而是返回值。