变量:
命名规则:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
$i站点is = 'mansikka'; // 合法变量名;可以用中文引用附值:& $a = &$b;//修改$a的值会影响到$b
只有有名字的变量才可以引用赋值$a = &(24*7) //error!
function &GetLogin (){ return $_SESSION[ 'Login']; }//works function &GetLogin (){ return &$_SESSION[ 'Login']; }//error function &GetLogin (){ $ret = & $_SESSION['Login' ]; return $ret;
}//works$my_variable_{$type}_name = true;//error $n="my_variable_{$type}_name"; ${$n} = true;- $GLOBALS
- 包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键名为全局变量的名称。从 PHP 3 开始存在 $GLOBALS 数组。
- $_SERVER
- 变量由 web 服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。
- $_GET
- 经由 URL 请求提交至脚本的变量。类似于旧数组 $HTTP_GET_VARS 数组(依然有效,但反对使用)。
- $_POST
- 经由 HTTP POST 方法提交至脚本的变量。类似于旧数组 $HTTP_POST_VARS 数组(依然有效,但反对使用)。
- $_COOKIE
- 经由 HTTP Cookies 方法提交至脚本的变量。类似于旧数组 $HTTP_COOKIE_VARS 数组(依然有效,但反对使用)。
- $_FILES
- 经由 HTTP POST 文件上传而提交至脚本的变量。类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用)。详细信息请参阅 POST 方法上传。
- $_ENV
- 执行环境提交至脚本的变量。类似于旧数组 $HTTP_ENV_VARS 数组(依然有效,但反对使用)。
- $_REQUEST
- 经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义。此数组在 PHP 4.1.0 之前没有直接对应的版本。参见 import_request_variables()。
//兼容以前的版本 if (!isset($_SERVER) && isset($HTTP_SERVER_VARS))
define('_SERVER', 'HTTP_SERVER_VARS');
or
if (!isset($_SERVER)) { $_GET = &$HTTP_GET_VARS; $_POST = &$HTTP_POST_VARS; $_ENV = &$HTTP_ENV_VARS; $_SERVER = &$HTTP_SERVER_VARS; $_COOKIE = &$HTTP_COOKIE_VARS; $_REQUEST = array_merge($_GET, $_POST, $_COOKIE); }//将_post中的数据设置为变量
foreach ($_POST as $key => $value) { switch ($key) { case "submitted_var_1"://已知的变量名 case "submitted_var_2": case "submitted_var_3": $$key = $value; break; case "dangerous_var": $value = do_something_special_with($value );//预定义的处理 $$key = $value; break; } }1. 变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。
2.但是,在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。
3.PHP 中全局变量在函数中使用时必须申明为全局。 global
$a = 1;$b = 2; function Sum(){ global $a, $b; $b = $a + $b; } Sum(); echo $b; $a = 1;$b = 2; function Sum(){ $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b' ]; } Sum(); echo $b;
function test_global(){ // 大多数的预定义变量并不 "super",它们需要用 'global' 关键字来使它们在函数的本地区域中有效。 global $HTTP_POST_VARS; echo $HTTP_POST_VARS['name']; // Superglobals 在任何范围内都有效,它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。 echo $_POST['name']; }function Test(){ static $count = 0; $count++; echo $count; if ($count < 10) { Test(); } $count--; }
class test { var $var; var $static_var; function test() { static $s; $this ->static_var =& $s; } } $a=new test(); $a-> static_var=4; $a->var =4; $b=new test(); echo $b->static_var ; //this will output 4 echo $b->var; //this will output nul
${$a[1]} ,${$a}[1] $a = "hello"; $b = "world"; ${$a}{$b} = "Wrong"; ${$a} . "_" . {$b} = "Wrong"; ${$a . "_" . $b} = "You got it"; print $hello_world; // Prints "You got it"; ${$a . $b} = "You got it again"; print $helloworld; // Prints "You got it again"; $getar = $_GET; $getkeys = array_keys($getar); for($i=0; $i<count($getkeys); $i++){ $k = $getkeys[$i]; $v = $getar[$k]; ${$k}=$v; }$_POST['username'] $_REQUEST['username']
import_request_variables('p', 'p_'); echo $p_username;
//表单例子
<?php if (isset($_POST['action']) && $_POST['action'] == 'submitted') { echo '<pre>'; print_r($_POST);
echo '<a href="'. $_SERVER['PHP_SELF' ] .'">Please try again</a>'; echo '</pre>'; } else { ?> <form action="<?php echo $_SERVER['PHP_SELF' ]; ?>" method="post"> Name: <input type="text" name="personal[name]"><br /> Email: <input type="text" name="personal[email]"><br /> Beer: <br> <select multiple name="beer[]"> <option value="warthog">Warthog</option> <option value="guinness">Guinness</option> <option value="stuttgarter">Stuttgarter Schwabenbr</option> </select><br /> <input type="hidden" name="action" value="submitted" /> <input type="submit" name="submit" value="submit me!" /> </form> <?php }?>//http://www.php.net/manual/zh/function.setcookie.php
<?php
setcookie("MyCookie[foo]", 'Testing 1', time()+3600);
setcookie("MyCookie[bar]", 'Testing 2' , time()+3600);
?> 为什么我又没有收到blogger的email回置,是因为两篇文章发布的时间太近吗?!郁闷ing...
--
[:p] --fallseir.lee
没有评论:
发表评论