system_esc

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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" NULLFALSEarray()var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE

除了当变量没有置值时不产生警告之外,empty()(boolean) var 的反义词。参见转换为布尔值获取更多信息。

5.floatval()返回变量 varfloat 数值。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)."\n";
// 打印:mysql link

$fp fopen("foo","w");
echo 
get_resource_type($fp)."\n";
// 打印:file

$doc new_xmldoc("1.0");
echo 
get_resource_type($doc->doc)."\n";
// 打印:domxml document
?>

8.string gettype ( mixed $var );

 

返回 PHP 变量的类型 var.

 

Warning

不要使用 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 转换(默认是十进制),返回变量 varinteger 数值。 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 );检测变量是否是数组;如果 vararray,则返回 TRUE,否则返回 FALSE

11.bool is_bool ( mixed $var )检测变量是否是布尔型 ;如果 varboolean 则返回 TRUE

12.is_callable()检测参数是否为合法的可调用结构 ;

bool is_callable ( callable $name [, bool $syntax_only = false [, string &$callable_name ]] )

验证变量的内容能否作为函数调用。 这可以检查包含有效函数名的变量,或者一个数组,包含了正确编码的对象以及函数名。

参数: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($functionVariablefalse$callable_name));  // bool(true)

echo $callable_name"\n";  // someFunction

//
//  Array containing a method
//

class someClass {

  function 
someMethod() 
  {
  }

}

$anObject = new someClass();

$methodVariable = array($anObject'someMethod');

var_dump(is_callable($methodVariabletrue$callable_name));  //  bool(true)

echo $callable_name"\n";  //  someClass::someMethod

?>

 

 

13.is_double() 是 is_float() 的别名函数

14.bool is_float ( mixed $var )检测变量是否是浮点型;如果 varfloat 则返回 TRUE,否则返回 FALSE

15.bool is_int ( mixed $var )检测变量是否是整数;如果 varinteger 则返回 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检测变量是否为资源类型 ;如果给出的参数 varresource 类型,is_resource() 返回 TRUE,否则返回 FALSE

23.bool is_scalar ( mixed $var )检测变量是否是一个标量 ;如果给出的变量参数 var 是一个标量,is_scalar() 返回 TRUE,否则返回 FALSE。标量变量是指那些包含了 integerfloatstringboolean的变量,而 arrayobjectresource 则不是标量。

 

 

 

 

 

 

24.bool is_string ( mixed $var )检测变量是否是字符串;如果 varstring 则返回 TRUE,否则返回 FALSE

 

25.bool isset ( mixed $var [, mixed $... ] )检测变量是否设置;

检测变量是否设置,并且不是 NULL

 

如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 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() 显示关于一个变量的易于理解的信息。如果给出的是 stringintegerfloat,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。

记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。

如果想捕捉 print_r() 的输出,可使用 return 参数。若此参数设为 TRUEprint_r() 将不打印结果(此为默认动作),而是返回其输出。

<?php
    $b 
= array ('m' => 'monkey''foo' => 'bar''x' => array ('x''y''z'));
    
$results print_r ($btrue); //$results 包含了 print_r 的输出结果
?>
27.string serialize ( mixed $value )产生一个可存储的值的表示

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)) {
    
/* 出错 */
    
}
}
?>
28.bool settype ( mixed &$var , string $type )设置变量的类型;将变量 var 的类型设置成 type
参数:

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)
?>
29.string strval ( mixed $var )获取变量的字符串值

 

返回 varstring 值。 参见 string 文档获取更多关于字符串转换的信息。

 

var 可以是任何标量类型。不能将 strval() 用于数组或对象。

30.mixed unserialize ( string $str )从已存储的表示中创建 PHP 的值 ;

unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。

参数:

str

序列化后的字符串。

 

若被解序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup() 成员函数(如果存在的话)。

 

Note: unserialize_callback_func 指令

如果在解序列化的时候需要实例化一个未定义类,则可以设置回调函数以供调用(以免得到的是不完整的 object “__PHP_Incomplete_Class”)。可通过 php.iniini_set().htaccess 定义‘unserialize_callback_func’。每次实例化一个未定义类时它都会被调用。若要禁止这个特性,只需置空此设定。

 

返回值:

返回的是转换之后的值,可为 integerfloatstringarrayobject

 

如果传递的字符串不可解序列化,则返回 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 指出需要的是哪一个类
}
?>

 

注释

Warning

如果反序列化了 FALSE 的值,或者在过程中发生了错误,都会返回 FALSE。 可以通过 strserialize(false) 进行比较,或者捕捉 E_NOTICE 错误来判断这种特殊情况。

31.void unset ( mixed $var [, mixed $... ] )释放给定的变量

unset() 销毁指定的变量。

unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。

如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

 

<?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\n";

foo($bar);
echo 
"$bar\n";
?>

 

以上例程会输出:

 

something
something

 

如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。

 

<?php
function foo()
{
    static 
$bar;
    
$bar++;
    echo 
"Before unset: $bar, ";
    unset(
$bar);
    
$bar 23;
    echo 
"after unset: $bar\n";
}

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 (12, 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($bTRUE);
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

posted on 2014-02-10 11:49  system_esc  阅读(414)  评论(0编辑  收藏  举报