php之变量
2021-06-07 10:05
什么是变量? —变量就是包括了一个名称和值的“标识符”
1.变量的命名
php中变量必须以 $ 開始。比方 $s , $name, 注意当$出现,后面紧挨着的字符就会识别为一个变量
php
header("content-type:text/html;charset=utf-8");
echo "$是美元";//Notice: Undefined variable: 是美元
echo ‘
‘;
$汉字 = 100;//变量还支撑中文命名 但不好吧!!
echo $汉字;
echo ‘
‘;
//php中变量区分大写和小写, $a 和 $A代表两个不同变量
$a = 1;
$A = 2;
echo "a= $a , A = $A";//a =1 ,A = 2
echo ‘
‘;
$c;//定义个变量但不赋值
echo $c; //Notice: Undefined variable: c
//变量不能命名不能以数字开头
//$1a=100;
$_a = 101;//能够下划线开头命名
echo $_a.‘
‘;
//变量能够用关键字命名,可是不推荐的!!!。。
$if = 102;
echo $if.‘
‘;
- 变量名必须以_ 字母开头
- 变量名能够包括_ ,字母 。 数字
- 变量名能够用关键字和中文命名可是不推荐
-
变量名要尽量有意义,达到见名知义
变量命名的通常写法:
驼峰法: myName userName
- 帕斯卡命名: MyName UserName
- 下划线命名: my_name user_name
2.变量的传值方式
$a = 10; //表示声明了一个a的变量,再把10赋值给a;
- 值传递
"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
- 引用传递
"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提交以以下四种形式存在:
html>
head>
meta charset="utf-8">
title> New Document title>
head>
body>
form method="get" action="get.php">
昵称input type="text" name="name" />br />
密码input type="password" name="pwd" />br />
篮球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 />
a href="get.php?name=tom&pwd=123456"
>点击跳转a>
script type="text/javascript">
//get 形式三
//location.href = "http://www.soscw.com/get.php?name=jerry&pwd=321";
//get 形式四
//location.assign("get.php?name=jerry&pwd=567");
script>
body>
html>
get.php 代码例如以下:
"content-type:text/html;charset=utf-8");
echo ‘‘
;
var_dump($_GET);
echo ‘
‘;
$name = $_GET[‘name‘];
$pwd = $_GET[‘pwd‘];
echo "name = $name , pwd = $pwd";
echo ‘‘.$_GET[‘hobby‘][0];
$_POST变量
html>
head>
meta charset="utf-8">
title> New Document title>
head>
body>
form method="post" action="post.php">
昵称input type="text" name="name" />br />
密码input type="password" name="pwd" />br />
篮球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代码
"content-type:text/html;charset=utf-8");
echo ‘‘
;
var_dump($_POST);
echo ‘
‘;
$name = $_POST[‘name‘];
$pwd = $_POST[‘pwd‘];
echo "name = $name , pwd = $pwd";
echo ‘‘.$_POST[‘hobby‘][0];
$_REQUEST变量
$_REQUEST 数据 = $_POST 数据 + $_GET数据
html>
head>
meta charset="utf-8">
title> New Document title>
head>
body>
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代码:
"content-type:text/html;charset=utf-8");
//$_POST获取数据
echo ‘‘
;
var_dump($_POST);
echo ‘
‘;
$name = $_POST[‘name‘];
$pwd = $_POST[‘pwd‘];
echo ‘‘."name = $name , pwd = $pwd"; //$_GET获取数据 echo ‘
‘; var_dump($_GET); echo ‘‘; $a = $_GET[‘a‘]; $b = $_GET[‘b‘]; echo ‘
‘."a = $a , b = $b"; //$_REQUEST获取数据 echo ‘
‘; var_dump($_REQUEST); echo ‘‘; $name = $_REQUEST[‘name‘]; $pwd = $_REQUEST[‘pwd‘]; $a = $_REQUEST[‘a‘]; $b = $_REQUEST[‘b‘]; echo ‘
‘."name = $name , pwd = $pwd ,a = $a , b = $b";
假如post和get提交的时候有同样的键名会怎样?
html>
head>
meta charset="utf-8">
title> New Document title>
head>
body>
form method="post" action="request.php?a=111&b=222"
>
昵称input type="text" name="name" />br />
密码input type="password" name="pwd" />br />
身高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 ‘‘
;
var_dump($_POST);
echo ‘
‘;
$name = $_POST[‘name‘];
$pwd = $_POST[‘pwd‘];
echo ‘‘."name = $name , pwd = $pwd"; //$_GET获取数据 echo ‘
‘; var_dump($_GET); echo ‘‘; $a = $_GET[‘a‘]; $b = $_GET[‘b‘]; echo ‘
‘."a = $a , b = $b"; //$_REQUEST获取数据 echo ‘
‘; var_dump($_REQUEST); echo ‘‘; $name = $_REQUEST[‘name‘]; $pwd = $_REQUEST[‘pwd‘]; $a = $_REQUEST[‘a‘]; $b = $_REQUEST[‘b‘]; echo ‘
‘."name = $name , pwd = $pwd ,a = $a , b = $b";
ps: get 和 post 尽量别有同样的键名
5.$_SERVER变量
$_SERVER变量保存了client和服务端有关的请求。配置信息。
header("content-type:text/html;charset=utf-8");
echo("\$_SERVER超全局变量:
");
echo ‘‘;
foreach ($_SERVER as $key => $value) {
echo "";
echo "".$key."
";
echo "".$value."
";
echo "
";
}
echo ‘
‘;
?>
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‘].‘
‘;
echo $GLOBALS[‘A‘].‘
‘;
$t = &$GLOBALS[‘a‘];//通过$GLOBALS 不仅訪问到了全局变量,并且改动了它的值
$t =188;
echo "foo 函数被调用";
}
foo();
echo ‘‘
;
var_dump($GLOBALS);
?>