php可变变量-PHP基础巩固一

PHP基本句型方法区分大小写句子结束符,使用分号

不建议省略!

变量的基本含义

变量是包含名称和值的“标识符”。

形式:变量必须以$开头,后跟变量名

//表示变量名$val 引用了数值1的地址
//当我们在代码中使用$v1这个变量名,就是指使用“1”这个数据值。
$va1 = 1;

注意:一般情况下,在可以出现变量的句型中,只要出现$符号,并且后面跟有字符“,”,就会被识别为变量,即使该变量不存在。

echo  “人民币符合¥像个羊,美元符号$象个钱”;//这里就会有问题!

变量的基本使用

Value:在所有需要变量值的句子中,都会获取变量的值。 常见的例子包括

判断变量是否存在 isset()

修改变量值(赋值)

删除unset():就是打破变量名和数据之间的“引用关系”。

命名规则

通常命名包括变量名、函数名、常量名、类名、接口名等。

基本规则只能使用大小写字母、下划线(_)、数字不能以数字开头、不能与环境(系统)的关键字同名(如if、for、function...)行业规则(隐藏规则)

基本规则保证了句型的正确性。

行业规则保证你能否得到别人的尊重!

行业规则中,常用的命名规则有以下几种:

驼峰命名法:

示例:name、myName、myFatherName 帕斯卡命名法:

示例:Name、MyName、MyFatherName 下划线分隔方法:

示例:name、my_ame、my_father_name 变量之间的值传递形式。 这里讨论的值传递形式是指:一个变量到另一个变量。 除了仅适用于形参语句外,还适用于其他具有相同含义的语句,例如:函数从形参到左值的传值只有两种形式:按值传递和按引用传递。 在 PHP 中,所有变量默认都是按值传递。要使用引用传递,必须使用引用传递表示法:&pass-by-value

它是指复制一个变量的数据值(数据内容),然后将形参赋予另一个变量。

$v1 = 1;
$v2 = $v1;//有值传递
$v3 = $v1 + 10;//无值传递

粘贴_图像.png

通过引用传递

复制一个变量的引用关系,然后将参数赋予另一个变量,即另一个变量也通过关系确定指向某个数据

$v10 = 10;
$v20 = &$v10;

粘贴_图像.png

赋值(传值)后,两个变量指向相同的数据。 然后:对变量v10进行操作,改变了数据php可变变量,即表明v20也发生了改变。

$v10++;
echo $v20;//11

在通过引用传递值的情况下,如果取消设置一个变量,则与其相关的另一个变量(指向相同数据的关系)将不会受到影响。

unset($v20);
echo $v10;//11
echo $v20;//报错,提示Undefined

可变变量

所谓变量变量,就是一个变量的名字,也是一个变量。

$v1 = “abc”;        //这是一个字符串变量,其内容是字符串“abc”
$abc = 10;      //这是一个普通变量,其内容是数字10
echo  $$v1;     //此时,就是所谓“可变变量”

每当$符号出现时,就可以将其理解为变量。 如果出现第一个“$”,PHP会将其解释为变量,变量名为$v1; 我们知道$v1的值为“abc”,那么第一个“$”符号之前的变量名将是“abc”,即:echo试图输出的是变量$abc,它自然是数字10

即从最左边的$符号开始,$(&v1) => $abc => 10。理论上,变量变量可以有更多的嵌套php可变变量,如:$$$def;

预定义变量预定义变量又称为超级全局变量,包括:$_GET、$_POST、$_SERVER、$_REQUEST、$GLOBALS、$_COOKIE、$_SESSION、.........(约10)范围问题:在php中,自定义变量的作用域分为两种:全局作用域(函数外)和局部作用域(函数内)。 但预定义变量的作用域称为“超全局作用域”:全局作用域+局部作用域之和(函数内外都可用) 数据类型问题:超全局变量都是字段! $_GET 变量(数组)

预定义的数组变量$_GET指的是GET方法提交的所有数据的集合(数组),例如

形式一:

项目1: 
项目2: 


它的作用是:用户填写表单数据并提交后,数据将被发送(提交)到页面abc.php。 其实也可以理解为“打开”网页(abc.php),或者“请求”页面。 网页 (abc.php)

形式二:
Get

它的功能是:用户点击链接后,会将数据发送(提交)到页面abc.php。 其实也可以理解为“打开”网页(abc.php),或者“请求”网页(abc.php),这个请求也是一个get请求

形式三:

location.href = “abc.php?uName=test1&uPswd=123”;        //利用location对象的属性href

它的作用是:当执行这行语句时(通常看起来是在函数中),数据就会被发送(提交)到页面abc.php。 其实也可以理解为“打开”网页(abc.php)。 也可以理解为“请求”网页(abc.php)。 这个请求也是一个get请求。

形式四:

location.assign( “abc.php?uName=test1&uPswd=123”);  //利用location对象的方法assign()

它的作用是:当执行这行语句时(通常看起来是在函数中),数据就会被发送(提交)到页面abc.php。 其实也可以理解为“打开”网页(abc.php)。 也可以理解为“请求”网页(abc.php)。 这个请求也是一个get请求。

无论哪种方式获取提交的数据,获取数据都是一样的:(在abc.php网页中)


下面的输出是$_GET,第一个是形式


    姓名:
    密码:
    年龄:
    
爱好: 足球 篮球 羽毛球

php代码


最终输出是

array(4) {
  ["uName"]=>
  string(4) "Jens"
  ["uPswd"]=>
  string(6) "123456"
  ["uAge"]=>
  string(2) "21"
  ["uHobby"]=>
  array(2) {
    [0]=>
    string(6) "lanqiu"
    [1]=>
    string(8) "yumaoqiu"
  }
}

$_POST 变量(数组)

与$_GET变量(数组)类似,$_POST表示页面以post形式提交的数据生成的字段。

通过邮寄提交数据通常只有一种方式:

    
        项目1: 
        项目2: 
        
    

它的作用是:用户填写表单数据并提交后,数据将被发送(提交)到页面abc.php。 其实也可以理解为“打开”网页(abc.php),或者“请求”页面。 网页(abc.php)接收post数据的方式是:(在abc.php网页中)


通常网页中的form表单一般采用post表单,而get方法主要体现在其他三种方法中。

$_REQUEST 变量(数组)

$_REQUEST链表实际上并不是一个独立的数据源,而是$_POST数据和$_GET数据的“和”。 也就是说,$_REQUEST链表包括所有$_POST数据和$_GET数据——它实际上是手动存储在系统内的。 的。 通常,$_POST数据和$_GET数据不会“同时出现”,$_REQUEST链表代表其中之一。

无论表单提交方式是GET还是POST,接收方式都是

$u = $_REQUEST['XXX'];

get和post数据同时提交的情况

 ...
    项目1: 
    项目2: 
    

此时uName和uPswd这两个数据以post的形式提交给abc.php,同时:a=5和b=10这两个数据以post的形式提交给abc.php得到

然后在abc.php页面中:

//这样取得get数据:
$v1 = $_GET[‘a’];
$v2 = $_GET[‘b’];   
//这样取得post数据:
$v3 = $_POST[‘uName’];
$v4 = $_POST[‘uPswd’];
//但,也可以这样取(全有了):
$v1 = $_REQUEST[‘a’];
$v2 = $_REQUEST[‘b’];
$v3 = $_REQUEST[‘uName’]
$v4 = $_REQUEST[‘uPswd’]

当get数据和post数据同时提交并且名称相同时会发生什么?

$_SERVER 变量(数组)

该变量存储了服务器或客户端的一些请求信息或设置信息,对于不同的服务器、不同的请求页面,数据项可能不同。

所有项目的输出代码

 $value) {
        echo $key . " ==> " . $value;
    }
 ?>

$GLOBALS 变量(数组)

看起来是一个多余的变量:它只是存储了我们在这个字段中定义的所有全局变量:变量名是链表的下标(键名),变量值是对应的值。例如


那么输出结果就是

array(7) {
  ["GLOBALS"]=>
  *RECURSION*
  ["_POST"]=>
  array(0) {
  }
  ["_GET"]=>
  array(0) {
  }
  ["_COOKIE"]=>
  array(0) {
  }
  ["_FILES"]=>
  array(0) {
  }
  ["va1"]=>
  int(1)
  ["va2"]=>
  string(4) "jehe"
}

持续的

含义:用于存储不会更改且预计不会更改的数据的标识符。

常量命名规则与变量相同,但习惯上使用“全小写”形式的常量名称。

定义方法使用define()函数定义使用方法:define("常量名称",常量值),常用名称建议全部小写

例如

define("PI",3.14);
echo PI;// 3.14

使用const句型定义用法:const常量名=常量值; 但const句型只能用在“顶层”代码域中(不能用在大括号中),即const句型不能用在函数或条件句或其他表示“范围”的句子中”

例如

const PI = 3.14;
if(PI > 10){
    const PW = 5;// 错误,只能定义在最顶部
}

使用常量直接使用constant()函数使用名称:constant(“常量名称”)

例如


常量变量之间的差异决定了常量是否存在

判断的结果是一个布尔值。

常用方式:if (define (常量名)== false){ .....这里可以定义常量;}

事实上,可以这样做:

$结果=已定义(常量名称); //结果为真或为假

使用未定义常量(特殊情况)

使用未定义的常量会报告错误(注意错误)——与使用未定义的变量相同——当然不建议这样做。 但是:php,这时候你会得到一个意想不到的结果:看来这个常量是存在的,而且这个常量的值就是名称。

粘贴_图像.png

预定义常数

在php语言中,大量的常量是预先确定的,可以直接使用。 其中一些常量只有在打开各个模块后才可用(例如mysql模块)

魔法常数

魔法常数似乎是一个其值根据某些条件(环境)而变化的常数。 它在形式和用途上是不变的,但实际上,它的价值是变化的。

例如:

<?php 
    echo __DIR__;
    echo "
"; echo __FILE__; echo "
"; echo __LINE__; ?>

输出结果为

D:PHPdemo2
D:PHPdemo2get_1.php
6