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 = "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之變量