首页 > 代码库 > php之变量
php之变量
什么是变量? —变量就是包括了一个名称和值的“标识符”
1.变量的命名
php中变量必须以 $ 開始。比方 $s , $name, 注意当$出现,后面紧挨着的字符就会识别为一个变量
<?php
<?php
header("content-type:text/html;charset=utf-8");
echo "$是美元";//Notice: Undefined variable: 是美元
echo ‘<br>‘;
$汉字 = 100;//变量还支撑中文命名 但不好吧!!
echo $汉字;
echo ‘<br>‘;
//php中变量区分大写和小写, $a 和 $A代表两个不同变量
$a = 1;
$A = 2;
echo "a= $a , A = $A";//a =1 ,A = 2
echo ‘<br>‘;
$c;//定义个变量但不赋值
echo $c; //Notice: Undefined variable: c
//变量不能命名不能以数字开头
//$1a=100;
$_a = 101;//能够下划线开头命名
echo $_a.‘<br>‘;
//变量能够用关键字命名,可是不推荐的!!!。。
$if = 102;
echo $if.‘<br>‘;
- 变量名必须以_ 字母开头
- 变量名能够包括_ ,字母 。 数字
- 变量名能够用关键字和中文命名可是不推荐
变量名要尽量有意义,达到见名知义
变量命名的通常写法:
驼峰法: myName userName
- 帕斯卡命名: MyName UserName
- 下划线命名: my_name user_name
2.变量的传值方式
$a = 10; //表示声明了一个a的变量,再把10赋值给a;
- 值传递
<?php
header("content-type:text/html;charset=utf-8");
$a =10;
$b = $a;//这里就是值传递,把$a的值拷贝了一份,再赋给$b
$b++;
echo "a = $a , b = $b";//a = 10 , b = 11
unset($a);//unset函数断开变量和数据之间的引用
//Notice: Undefined variable: a
echo "a = $a , b = $b";//a = , b = 11
- 引用传递
<?php
header("content-type:text/html;charset=utf-8");
$a =10;
$b = &$a;//这里就是引用传递,把$a的引用拷贝了一份,再赋给$b
$b++;
echo "a = $a , b = $b";//a = 11 , b = 11
unset($a);//unset函数断开变量和数据之间的引用
//Notice: Undefined variable: a
echo "a = $a , b = $b";//a = , b = 11 $b的引用还是没断开 $a的引用断开而已
3.可变变量
可变变量就是一个变量的名又是一个变量
$abc = "num";
$num = 99;
//输出99
echo $$abc; //$$abc的变量名$abc又是一个变量
也支持2个以上的$嵌套,比方:
$hello = ‘abc‘;
$abc = ‘def‘;
$def = "variable";
echo $$$hello;//variable
4.提前定义变量
提前定义变量又叫超全局变量,包括:
$_GET , $_POST ,$_SERVER , $_REQUEST ,$GLOBALS , $_SESSION , $_COOKIE….
提前定义变量的作用域为超全局作用域:全局作用域(函数外)+ 局部作用域(函数内)。即函数的内外都能够使用。
提前定义变量都是数组。
$_GET变量
get提交以以下四种形式存在:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> New Document </title>
</head>
<body>
<!-- get形式一 -->
<form method="get" action="get.php">
昵称<input type="text" name="name" /><br />
密码<input type="password" name="pwd" /><br />
<!-- name="hobby[]" 由于每一个选项的name都是一样的。防止覆盖 -->
篮球<input type="checkbox" name="hobby[]" value="lq"/>
足球<input type="checkbox" name="hobby[]" value="zq"/>
羽毛球<input type="checkbox" name="hobby[]" value="ymq"/><br />
<input type="submit" value="提交"/>
</form>
<br />
<!-- get形式二 -->
<a href="get.php?name=tom&pwd=123456"
>点击跳转</a>
<script type="text/javascript">
//get 形式三
//location.href = "http://www.mamicode.com/get.php?name=jerry&pwd=321";
//get 形式四
//location.assign("get.php?name=jerry&pwd=567");
</script>
</body>
</html>
get.php 代码例如以下:
<?php
header("content-type:text/html;charset=utf-8");
echo ‘<pre>‘;
var_dump($_GET);
echo ‘</pre>‘;
$name = $_GET[‘name‘];
$pwd = $_GET[‘pwd‘];
echo "name = $name , pwd = $pwd";
echo ‘<br>‘.$_GET[‘hobby‘][0];
$_POST变量
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> New Document </title>
</head>
<body>
<!-- 表单一般都用post方式提交 -->
<form method="post" action="post.php">
昵称<input type="text" name="name" /><br />
密码<input type="password" name="pwd" /><br />
<!-- name="hobby[]" 由于每一个选项的name都是一样的,防止覆盖 -->
篮球<input type="checkbox" name="hobby[]" value="lq"/>
足球<input type="checkbox" name="hobby[]" value="zq"/>
羽毛球<input type="checkbox" name="hobby[]" value="ymq"/><br />
<input type="submit" value="提交"/>
</form>
</body>
</html>
post.php代码
<?php
header("content-type:text/html;charset=utf-8");
echo ‘<pre>‘;
var_dump($_POST);
echo ‘</pre>‘;
$name = $_POST[‘name‘];
$pwd = $_POST[‘pwd‘];
echo "name = $name , pwd = $pwd";
echo ‘<br>‘.$_POST[‘hobby‘][0];
$_REQUEST变量
$_REQUEST 数据 = $_POST 数据 + $_GET数据
<html>
<head>
<meta charset="utf-8">
<title> New Document </title>
</head>
<body>
<!-- 表单採用post 和get 方式 一起提交 -->
<form method="post" action="request.php?a=111&b=222">
昵称<input type="text" name="name" /><br />
密码<input type="password" name="pwd" /><br />
<input type="submit" value="提交"/>
</form>
</body>
</html>
request.php代码:
<?php
header("content-type:text/html;charset=utf-8");
//$_POST获取数据
echo ‘<pre>‘;
var_dump($_POST);
echo ‘</pre>‘;
$name = $_POST[‘name‘];
$pwd = $_POST[‘pwd‘];
echo ‘<br>‘."name = $name , pwd = $pwd";
//$_GET获取数据
echo ‘<pre>‘;
var_dump($_GET);
echo ‘</pre>‘;
$a = $_GET[‘a‘];
$b = $_GET[‘b‘];
echo ‘<br>‘."a = $a , b = $b";
//$_REQUEST获取数据
echo ‘<pre>‘;
var_dump($_REQUEST);
echo ‘</pre>‘;
$name = $_REQUEST[‘name‘];
$pwd = $_REQUEST[‘pwd‘];
$a = $_REQUEST[‘a‘];
$b = $_REQUEST[‘b‘];
echo ‘<br>‘."name = $name , pwd = $pwd ,a = $a , b = $b";
假如post和get提交的时候有同样的键名会怎样?
<html>
<head>
<meta charset="utf-8">
<title> New Document </title>
</head>
<body>
<!-- 表单採用post 和get 方式 一起提交 -->
<form method="post" action="request.php?a=111&b=222"
>
昵称<input type="text" name="name" /><br />
密码<input type="password" name="pwd" /><br />
<!-- post 这里也有个 name="a" -->
身高<input type="text" name="a" value="key"/><br />
<input type="submit" value="提交"/>
</form>
</body>
</html>
request.php:
<?php
header("content-type:text/html;charset=utf-8");
//$_POST获取数据
echo ‘<pre>‘;
var_dump($_POST);
echo ‘</pre>‘;
$name = $_POST[‘name‘];
$pwd = $_POST[‘pwd‘];
echo ‘<br>‘."name = $name , pwd = $pwd";
//$_GET获取数据
echo ‘<pre>‘;
var_dump($_GET);
echo ‘</pre>‘;
$a = $_GET[‘a‘];
$b = $_GET[‘b‘];
echo ‘<br>‘."a = $a , b = $b";
//$_REQUEST获取数据
echo ‘<pre>‘;
var_dump($_REQUEST);
echo ‘</pre>‘;
$name = $_REQUEST[‘name‘];
$pwd = $_REQUEST[‘pwd‘];
$a = $_REQUEST[‘a‘];
$b = $_REQUEST[‘b‘];
echo ‘<br>‘."name = $name , pwd = $pwd ,a = $a , b = $b";
ps: get 和 post 尽量别有同样的键名
5.$_SERVER变量
$_SERVER变量保存了client和服务端有关的请求。配置信息。
<?php
header("content-type:text/html;charset=utf-8");
echo("\$_SERVER超全局变量:<br>");
echo ‘<table border=1s>‘;
foreach ($_SERVER as $key => $value) {
echo "<tr>";
echo "<td>".$key."</td>";
echo "<td>".$value."</td>";
echo "</tr>";
}
echo ‘</table >‘;
?>
6.$GLOBALS变量
$GLOBALS变量保存了我们定义的全局变量
<?php
header("content-type:text/html;charset=utf-8");
$a = 5;
$b =100;
$A=100;
function foo()
{
$c = 9;
$d =10;
echo $GLOBALS[‘a‘].‘<br>‘;
echo $GLOBALS[‘A‘].‘<br>‘;
$t = &$GLOBALS[‘a‘];//通过$GLOBALS 不仅訪问到了全局变量,并且改动了它的值
$t =188;
echo "foo 函数被调用";
}
foo();
echo ‘<pre>‘;
var_dump($GLOBALS);
?>
php之变量