当前位置: 首页 > news >正文

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

这里写图片描写叙述

相关文章:

  • 12、sed、awk、数组 学习笔记
  • MapGuide Fusion viewer中如何用Google Map/Yahoo Map/Bing Map做底图
  • RTX——第14章 信号量
  • Ubuntu12.04编译android4.3源码问题集锦
  • Android零基础入门第12节:熟悉Android Studio界面,开始装逼卖萌
  • 1570. [POJ3461]乌力波
  • ios学习之旅--oc对象的关系
  • 自己写的分页器,BOOTSTRAP+JQUERY(非完全版,后续完善)
  • spring data jpa的update操作
  • 详解java定时任务
  • day7回顾
  • Get和Post的参数传值
  • Linux查看占用GPU的进程
  • C++ 类型声明
  • 信息系统项目管理师----成本类计算
  • co模块的前端实现
  • JavaScript HTML DOM
  • Javascript基础之Array数组API
  • PHP那些事儿
  • Python十分钟制作属于你自己的个性logo
  • React 快速上手 - 07 前端路由 react-router
  • Redis中的lru算法实现
  • 程序员该如何有效的找工作?
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 延迟脚本的方式
  • Prometheus VS InfluxDB
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (未解决)macOS matplotlib 中文是方框
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)四层和七层负载均衡的区别
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • *上位机的定义
  • .NET 5种线程安全集合
  • .NET Framework .NET Core与 .NET 的区别
  • .net Signalr 使用笔记
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET关于 跳过SSL中遇到的问题
  • .NET连接MongoDB数据库实例教程
  • .NET性能优化(文摘)
  • .NET中 MVC 工厂模式浅析
  • .sys文件乱码_python vscode输出乱码
  • [20161101]rman备份与数据文件变化7.txt
  • [ACM] hdu 1201 18岁生日
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [Android]竖直滑动选择器WheelView的实现
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)