|
<!DOCTYPE html>
<html>
<title>变量</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>
<a href="../index.php">返回首页</a>
<hr></hr>
<p>变量</p>
1、PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的,这点同linux区分大小写。 <br/>
2、变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。这点同C ,C++ ,java的命名规则是一样的<br/>
3、$this 是一个特殊的变量,它不能被赋值。 <br/>
4、PHP 也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用
(换言之,“成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。同C的指针<br/>
5、只有有名字的变量才可以引用赋值。 <br/>
6、超级全局变量不能被用作可变变量。 <br/>
<?php
$foo = '123'; // 将 'Bob' 赋给 $foo
$bar = &$foo; // 通过 $bar 引用 $foo
$bar = "My name is $bar"; // 修改 $bar 变量
echo "<br/> ";echo $bar;
echo "<br/> ";echo $foo; // $foo 的值也被修改
?>
<?php #1 未初始化变量的默认值
echo "<br/> 未初始化变量的默认值";
// Unset AND unreferenced (no use context) variable; outputs NULL
echo "<br/> ";var_dump($unset_var);
// Boolean usage; outputs 'false' (See ternary operators for more on this syntax)
echo "<br/> ";echo($unset_bool ? "true\n" : "false\n");
// String usage; outputs 'string(3) "abc"'
$unset_str = 'abc';
#$unset_str .= 'abc';
echo "<br/> ";var_dump($unset_str);
// Integer usage; outputs 'int(25)'
$unset_int += 25; // 0 + 25 => 25
echo "<br/> ";var_dump($unset_int);
// Float/double usage; outputs 'float(1.25)'
$unset_float += 1.25;
echo "<br/> ";var_dump($unset_float);
// Array usage; outputs array(1) { [3]=> string(3) "def" }
$unset_arr[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
echo "<br/> ";var_dump($unset_arr);
// Object usage; creates new stdClass object (see http://www.php.net/manual/en/reserved.classes.php)
// Outputs: object(stdClass)#1 (1) { ["foo"]=> string(3) "bar" }
$unset_obj->foo = 'bar';
echo "<br/> ";var_dump($unset_obj);
?>
<hr></hr>
<p>变量范围</p>
1.变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。
<br/>
<?php #这里变量 $a 将会在包含文件 b.inc 中生效
$a = 1;
# include 'b.inc';
?><br/>
2.在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。PHP 中全局变量在函数中使用时必须申明为global。 <br/>
<?php
$a = 1; /* global scope */
function Test(){
$a = 2;
echo "<br/> $a; " ;echo $a; /* reference to local scope variable */
}
Test();
?>
<?php #1 使用 global
echo "<br/> 使用 global";
$a = 1;
$b = 2;
function Sum(){
global $a, $b;
$b = $a + $b;
}
Sum();
echo "<br/> ";echo $b;
?>
<br/>
$GLOBALS 是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。
<br/>
<?php #$GLOBALS 替代 global
echo "<br/> GLOBALS 替代 global";
$c = 1;
$d = 2;
function Sum2(){
$GLOBALS['d'] = $GLOBALS['c'] + $GLOBALS['d'];
}
Sum2();
echo "<br/> ";echo $d;
?>
<?php # 使用静态变量的例子
echo "<br/>使用静态变量的例子";
function test1(){
static $a = 0;
echo "<br/> "; echo $a;
$a++;
}
test1();
test1();
?> <br/>
<?php #3 超全局变量和作用域
function test_global(){
echo "超全局变量和作用域<br/>";
// 大多数的预定义变量并不 "super",它们需要用 'global' 关键字来使它们在函数的本地区域中有效。
global $HTTP_POST_VARS;
echo $HTTP_POST_VARS['name'];
// Superglobals 在任何范围内都有效,它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。
echo $_POST['name'];
}
test_global();
?>
<hr></hr>
<p>可变变量</p>
一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置<br/>
<?php
$a = 'aa';
?>
<?php #两个变量都被定义了:$a 的内容是“hello”并且 $hello 的内容是“world”。
$$a = 'world';
?>
<?php
echo "<br/> ";echo "$a ${$a}";
?>
<?php
echo "<br/> ";echo "$a $aa";
?>
</body>
</html>
|
|
|
|
|
|
|