1. 程式人生 > >php之變量

php之變量

賦值 href ack 信息 兩個 傳值 view add sign

什麽是變量? —變量就是包括了一個名稱和值的“標識符”

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>‘;

  1. 變量名必須以_ 字母開頭
  2. 變量名能夠包括_ ,字母 。 數字
  3. 變量名能夠用關鍵字和中文命名可是不推薦
  4. 變量名要盡量有意義,達到見名知義

    變量命名的通常寫法:

  5. 駝峰法: myName userName

  6. 帕斯卡命名: MyName UserName
  7. 下劃線命名: my_name user_name

2.變量的傳值方式

$a = 10; //表示聲明了一個a的變量,再把10賦值給a;
技術分享

  1. 值傳遞
<?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

技術分享

  1. 引用傳遞
<?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之變量