Variable handling 函数
1.boolval();
2.debug_zval_dump(&$var1);输出结果:&string(11) "Hello World" refcount(3)
3.doubleval();此函数是 floatval() 的别名。
4.empty($var);检查一个变量是否为空;如果 var
是非空或非零的值,则 empty() 返回 FALSE
。换句话说,""、0、"0"、 NULL
、FALSE
、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var
为空,则返回 TRUE
。
除了当变量没有置值时不产生警告之外,empty() 是 (boolean) var 的反义词。参见转换为布尔值获取更多信息。
5.floatval()返回变量 var
的 float 数值。var
可以是任何标量类型。你不能将 floatval() 用于数组或对象
<?php
$var = '122.34343The';
$float_value_of_var = floatval ($var);
print $float_value_of_var; // 打印出 122.34343
?>
6.array get_defined_vars();此函数返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。
<?php
$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"]);
// 打印变量数组的所有可用键值
print_r(array_keys(get_defined_vars()));
?>
7.string get_resource_type ( resource $handle
);此函数返回一个字符串,用于表示传递给它的 resource 的类型。如果参数不是合法的 resource,将产生错误。
<?php
$c = mysql_connect();
echo get_resource_type($c)."
";
// 打印:mysql link
$fp = fopen("foo","w");
echo get_resource_type($fp)."
";
// 打印:file
$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc)."
";
// 打印:domxml document
?>
8.string gettype ( mixed $var
);
返回 PHP 变量的类型 var
.
不要使用 gettype() 来测试某种类型,因为其返回的字符串在未来的版本中可能需要改变。此外,由于包含了字符串的比较,它的运行也是较慢的。
使用 is_* 函数代替。
返回的字符串的可能值为:
- “boolean”(从 PHP 4 起)
- “integer”
- “double”(由于历史原因,如果是 float 则返回“double”,而不是“float”)
- “string”
- “array”
- “object”
- “resource”(从 PHP 4 起)
- “NULL”(从 PHP 4 起)
- “user function”(只用于 PHP 3,现已停用)
- “unknown type”
对于 PHP 4,你应该使用 function_exists() 和 method_exists() 取代先前将 gettype() 作用于函数的用法。
参见 settype()、is_array()、is_bool()、is_float()、is_integer()、is_null()、is_numeric()、is_object()、is_resource()、is_scalar() 和 is_string()。
function myGetType($var)
{
if (is_array($var)) return "array";
if (is_bool($var)) return "boolean";
if (is_float($var)) return "float";
if (is_int($var)) return "integer";
if (is_null($var)) return "NULL";
if (is_numeric($var)) return "numeric";
if (is_object($var)) return "object";
if (is_resource($var)) return "resource";
if (is_string($var)) return "string";
return "unknown type";
}
9.int intval ( mixed $var
[, int $base
= 10 ] );通过使用指定的进制 base
转换(默认是十进制),返回变量 var
的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE
错误并返回 1。
返回值:
成功时返回 var
的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1。
最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。举例,在这样的系统上, intval('1000000000000') 会返回 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。
字符串有可能返回 0,虽然取决于字符串最左侧的字符。 使用 整型转换 的共同规则。
10.bool is_array ( mixed $var
);检测变量是否是数组;如果 var
是 array,则返回 TRUE
,否则返回 FALSE
11.bool is_bool ( mixed $var
)检测变量是否是布尔型 ;如果 var
是 boolean 则返回 TRUE
。
12.is_callable() — 检测参数是否为合法的可调用结构 ;
验证变量的内容能否作为函数调用。 这可以检查包含有效函数名的变量,或者一个数组,包含了正确编码的对象以及函数名。
参数:name
要检查的回调函数。
syntax_only
如果设置为 TRUE
,这个函数仅仅验证 name
可能是函数或方法。 它仅仅拒绝非字符,或者未包含能用于回调函数的有效结构。有效的应该包含两个元素,第一个是一个对象或者字符,第二个元素是个字符。
callable_name
接受“可调用的名称”。下面的例子是“someClass::someMethod”。 注意,尽管 someClass::SomeMethod() 的含义是可调用的静态方法,但例子的情况并不是这样的。
返回值:如果 name
可调用则返回 TRUE
,否则返回 FALSE
。
Example #1 is_callable() 例子
<?php
// How to check a variable to see if it can be called
// as a function.
//
// Simple variable containing a function
//
function someFunction()
{
}
$functionVariable = 'someFunction';
var_dump(is_callable($functionVariable, false, $callable_name)); // bool(true)
echo $callable_name, "
"; // someFunction
//
// Array containing a method
//
class someClass {
function someMethod()
{
}
}
$anObject = new someClass();
$methodVariable = array($anObject, 'someMethod');
var_dump(is_callable($methodVariable, true, $callable_name)); // bool(true)
echo $callable_name, "
"; // someClass::someMethod
?>
13.is_double() 是 is_float() 的别名函数
14.bool is_float ( mixed $var
)检测变量是否是浮点型;如果 var
是 float 则返回 TRUE
,否则返回 FALSE
。
15.bool is_int ( mixed $var
)检测变量是否是整数;如果 var
是 integer 则返回 TRUE
,否则返回 FALSE
。
16.is_integer是 is_int() 的别名函数
17.is_long 是 is_int() 的别名函数
18. bool is_null ( mixed $var
)检测变量是否为 NULL
;
19.bool is_numeric ( mixed $var
)检测变量是否为数字或数字字符串 ;如果 var
是数字和数字字符串则返回 TRUE
,否则返回 FALSE
。
20.bool is_object ( mixed $var
)检测变量是否是一个对象;如果 var
是一个 object 则返回 TRUE
,否则返回 FALSE
。
21.is_real() 是 is_float() 的别名函数
22.bool is_resource ( mixed $var
) 检测变量是否为资源类型 ;如果给出的参数 var
是 resource 类型,is_resource() 返回 TRUE
,否则返回 FALSE
。
23.bool is_scalar ( mixed $var
)检测变量是否是一个标量 ;如果给出的变量参数 var
是一个标量,is_scalar() 返回 TRUE
,否则返回 FALSE
。标量变量是指那些包含了 integer、float、string 或 boolean的变量,而 array、object 和 resource 则不是标量。
24.bool is_string ( mixed $var
)检测变量是否是字符串;如果 var
是 string 则返回 TRUE
,否则返回 FALSE
。
25.bool isset ( mixed $var
[, mixed $...
] )检测变量是否设置;
检测变量是否设置,并且不是 NULL
。
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL
的变量,将返回 FALSE
。同时要注意的是一个 NULL
字节(" ")并不等同于 PHP 的 NULL
常数。
返回值:如果 var
存在并且值不是 NULL
则返回 TRUE
,否则返回 FALSE
。
Example #1 isset() 例子
<?php
$var = '';
// 结果为 TRUE,所以后边的文本将被打印出来。
if (isset($var)) {
echo "This var is set so I will print.";
}
// 在后边的例子中,我们将使用 var_dump 输出 isset() 的返回值。
// the return value of isset().
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE
$foo = NULL;
var_dump(isset($foo)); // FALSE
?>
这对于数组中的元素也同样有效:
<?php
$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));
var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE
// 键 'hello' 的值等于 NULL,所以被认为是未置值的。
// 如果想检测 NULL 键值,可以试试下边的方法。
var_dump(array_key_exists('hello', $a)); // TRUE
// Checking deeper array values
var_dump(isset($a['pie']['a'])); // TRUE
var_dump(isset($a['pie']['b'])); // FALSE
var_dump(isset($a['cake']['a']['b'])); // FALSE
?>
26.bool print_r ( mixed $expression
[, bool $return
] )打印关于变量的易于理解的信息。
print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。
如果想捕捉 print_r() 的输出,可使用 return
参数。若此参数设为 TRUE
,print_r() 将不打印结果(此为默认动作),而是返回其输出。
<?php
$b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z'));
$results = print_r ($b, true); //$results 包含了 print_r 的输出结果
?>
serialize() 返回字符串,此字符串包含了表示 value
的字节流,可以存储于任何地方。
这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。
当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。
<?php
// $session_data 是包含了当前用户 session 信息的多维数组。
// 我们使用 serialize() 在请求结束之前将其存储到数据库中。
$conn = odbc_connect ("webdb", "php", "chicken");
$stmt = odbc_prepare ($conn,
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $PHP_AUTH_USER);
if (!odbc_execute ($stmt, &$sqldata)) {
$stmt = odbc_prepare($conn,
"INSERT INTO sessions (id, data) VALUES(?, ?)");
if (!odbc_execute($stmt, &$sqldata)) {
/* 出错 */
}
}
?>
var
要转换的变量。
type
type
的可能值为:
- “boolean” (或为“bool”,从 PHP 4.2.0 起)
- “integer” (或为“int”,从 PHP 4.2.0 起)
- “float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)
- "string"
- "array"
- "object"
- “null” (从 PHP 4.2.0 起)
返回值:成功时返回 TRUE
, 或者在失败时返回 FALSE
。
Example #1 settype() 示例
<?php
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo 现在是 5 (integer)
settype($bar, "string"); // $bar 现在是 "1" (string)
?>
$var
)获取变量的字符串值
返回 var
的 string 值。 参见 string 文档获取更多关于字符串转换的信息。
var
可以是任何标量类型。不能将 strval() 用于数组或对象。
30.mixed unserialize ( string $str
)从已存储的表示中创建 PHP 的值 ;
unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。
参数:
str
序列化后的字符串。
若被解序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup() 成员函数(如果存在的话)。
Note: unserialize_callback_func 指令
如果在解序列化的时候需要实例化一个未定义类,则可以设置回调函数以供调用(以免得到的是不完整的 object “__PHP_Incomplete_Class”)。可通过 php.ini、ini_set() 或 .htaccess 定义‘unserialize_callback_func’。每次实例化一个未定义类时它都会被调用。若要禁止这个特性,只需置空此设定。
返回值:
返回的是转换之后的值,可为 integer、float、string、array 或 object。
如果传递的字符串不可解序列化,则返回 FALSE
,并产生一个 E_NOTICE
。
Example #1 unserialize() 例子
<?php
// 这里,我们使用 unserialize() 装载来自数据库的 $session_data 数组中的会话数据。
// 此例是描述 serialize() 的那个例子的补充。
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array($_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, $sqldata) || !odbc_fetch_into($stmt, $tmp)) {
// 如果执行出错或返回错误,则初始化为空数组
$session_data = array();
} else {
// 现在我们需要的是 $tmp[0] 中已序列化的数据。
$session_data = unserialize($tmp[0]);
if (!is_array($session_data)) {
// 出错,初始化为空数组
$session_data = array();
}
}
?>
Example #2 unserialize_callback_func 例子
<?php
$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';
// unserialize_callback_func 从 PHP 4.2.0 起可用
ini_set('unserialize_callback_func', 'mycallback'); // 设置您的回调函数
function mycallback($classname)
{
// 只需包含含有类定义的文件
// $classname 指出需要的是哪一个类
}
?>
注释¶
<?php
function destroy_foo() {
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
以上例程会输出:
bar
如果您想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现:
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
<?php
function foo(&$bar) {
unset($bar);
$bar = "blah";
}
$bar = 'something';
echo "$bar
";
foo($bar);
echo "$bar
";
?>
以上例程会输出:
something something
如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。
<?php
function foo()
{
static $bar;
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar = 23;
echo "after unset: $bar
";
}
foo();
foo();
foo();
?>
以上例程会输出:
Before unset: 1, after unset: 23 Before unset: 2, after unset: 23 Before unset: 3, after unset: 23
参数¶
var
-
要销毁的变量。
...
-
其他变量……
返回值¶
没有返回值。
32.void var_dump ( mixed $expression
[, mixed $...
] )打印变量的相关信息
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
33.mixed var_export ( mixed $expression
[, bool $return
] )输出或返回一个变量的字符串表示
此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。
您可以通过将函数的第二个参数设置为 TRUE
,从而返回变量的表示。
比较 var_export() 和 var_dump().
<pre>
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export ($a);
/* 输出:
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)
*/
$b = 3.1;
$v = var_export($b, TRUE);
echo $v;
/* 输出:
3.1
*/
?>
</pre>
34. 多字节字符串函数mb_detect_encoding — 检测字符的编码
说明:string mb_detect_encoding ( string $str
[, mixed $encoding_list
= mb_detect_order() [, bool $strict
= false ]] ):检测字符串str的编码
参数:str待检查的字符串
encoding_list是一个字符编码列表,编码顺序可以由数组或者逗号分隔的列表字符串指定,如果省略了encoding_list 将会使用detect_order
strict 指定了是否严格地检测编码.默认是false
返回值:检测到的字符编码,或者无法检测指定字符串的编码时返回 FALSE
。