变量:
命名规则:[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
没有评论:
发表评论