php之变量

本文详细介绍了PHP中变量的命名规则、传值方式、可变变量以及预定义变量的使用方法,包括预定义变量的作用域、类型及常用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是变量? —变量就是包含了一个名称和值的“标识符”

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变量保存了客户端和服务端有关的请求,配置信息。

<?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); 
?>

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值