变量

常用的标记形式

  1. <?php ?>标准形式(推荐)
  2. <script language="php"> </script>
  3. <? ?>:(不推荐使用)依赖于php.ini的设置项:shor_open_tag = On

变量的基本操作

操作 举例 注意点
赋值 $var = 1
取值 `$var3 = $var1 + 3; `
判断 isset(变量名) 变量为null,返回false
删除 unset(变量名) 删除一个变量,并不是从程序中删掉,而是‘断开引用’

判断 isset(变量名):

$var1 =  isset($a);  //结果false
var_dump($aaa); //bool(false)
$var2 = 200;
$var3 = isset($var2);//true
$var4 = null ; //null表示没有数据
$var5 = isset($var4); //false

删除:

  1. 该数据不指向任何数据,则isset()判断为false
  2. 没有任何变量指向它,通常会自动释放

变量命名规范

  • 基本规则 – 保证程序的正确性

    • 字母、下划线开头
    • 后面跟任意数量字母、数字、下划线
  • 行业规则 – 保证程序可读性

    • 驼峰: $myName
    • 帕斯卡命名法:每个单词首字母大写 $MyName
    • 下划线分割法:每个单词小写,并且之间用下划线分开 my_name

值类型和引用类型

传递方式 举例
一个变量传给另一个变量 $var2 = 1 ; $var1 = $var2 将值取出来,$var2的值还在
引用 只有一种语法形式可以实现变量的引用传值方式:&符号 $m1 = 1; $m2 = &$m1;

值传递: 值相等、彼此互不影响

$v1 = 10 ;
$v2 = $v1 ;
$v1 = 20 ;
echo $v1; //20
echo $v2; //10
unset($v1); //断开与其数据的关系
var_dump($v1); //null
var_dump($v2); //int(10)

引用传值: 可看做两个变量都指向同一个数据空间

//将$m1与其数值之间的"引用关系",复制一份,再给予变量m2,此时变量$m2也同样跟原来数据一样有个“引用关系”
//两个变量都指向同一个数据空间
$m1 = 1;
$m2 = &$m1;
$m1 = 100 ;
echo $m2; //100
echo $m1; //100
//----------
unset($m1); //断开与其数据的关系
var_dump($m1); //null
var_dump($m2); //int(10)  m2的引用还在。

可变变量

$var1 = 'a';
echo $$var1 ; // 'a'

$后面总是跟着变量名,因此输出的变量名为$var1,因此得出结果’a’。 连续出现$的形式,叫做可变变量。

表现灵活性的一个例子:

$var1 = 1111;
$var2 = 111;
$var3 = 11;
$var4 = 1;

$sum = 0 ;

for($i = 1 ; $i<=5 ; $i++){
    $v = "var" . $i; //php中 `.`是拼接字符串的意思
    $sum += $$v;
}

预定义变量

顾名思义,php预先处理好的变量。

//举例
$_GET 
$_POST
$_REQUEST
$_SERVER
$GLOBALS
  • 均是数组
  • 系统定义与维护–我们不要对其复制或销毁
  • 具有超全局作用域–哪里都可以使用
  • 不同情况下可能有不同的值

_POST变量

含义: 表示用户通过表单以post方式提交的时候提交的所有数据 –这个称为post数据。

文件:

<html>
<head>
    <meta charset="UTF-8">
    <title>helloWorld</title>
</head>
<body>
<form action="post_data.php" method="post">
    name: <input type="text" name="name">
    <br>
    password
    <input type="text" name="pwd">
    <input type="submit" value="提交">
</form>
</body>
</html>

文件:post_data.php

<html>
<head>
    <meta charset="UTF-8">
    <title>helloWorld</title>
</head>
<body>
<?php
    $name = $_POST['name'];
    $pwd  = $_POST['pwd'];
    echo 'name:'.$name;
    echo '<br>';
    echo 'pwd'.$pwd;
    echo '<br>';
    print_r($_POST); //Array ( [name] => wwww [pwd] => 23123 )
?>
</body>
</html>

isset(变量):判断变量是否存在,或者变量是否为空(null) empty(变量):判断内容是否为空的(不是null的空,而是没内容),基本上,是一些硬性规定,如下数据都是“空的”:0、‘0’、false、null、array()空数组都为空。如果是空,返回true。

if(!empty($_POST())){
}

计算器程序举例:

<?php
if (!empty($_POST)){
    $num1 = $_POST["data1"];
    $num2 = $_POST["data2"];
    $fuhao = $_POST["fuhao"];
    //自行判断
    //if ($fuhao == '+'){ }
    $jieguo = $num1 + $num2;
}else{
    $num1 = '';
    $num2 = '';
    $fuhao = '+';
    $jieguo = '';
}
?>

<form action="" method="post">
    <input type="text" name="data1" value="<?php echo $num1; ?>">
    <select name="fuhao" >
        <option value="+"  <?php if ($fuhao == "+") echo 'selected'?> >+</option>
        <option value="-"  <?php if ($fuhao == "-") echo 'selected'?>>-</option>
        <option value="*"  <?php if ($fuhao == "*") echo 'selected'?>>*</option>
        <option value="/"  <?php if ($fuhao == "/") echo 'selected'?>>/</option>
    </select>
     <input type="text" name="data2" value="<?php echo $num2; ?>">
    <input type="submit" value="=">
    <input type="text" name="result" value="<?php echo $jieguo; ?>">
</form>

20170615724321.png

_GET变量

print_r($_GET);var_dump($_GET)

有多种get形式提交数据。

形式1: form表单形式

<form action="get_data.php" method="get">
    <input type="text" name="data1"">
     <input type="text" name="data2">
    <input type="submit" value="=">
</form>

形式2:

<a href='xx.php'?data1=1&data2=2>link</a>

形式3:js

<script>
    location.href="xx.php'?data1=1&data2=2";
</script>

形式4:js

<script>
    location.assign("xx.php'?data1=1&data2=2");
</script>

形式5:php

<?php 
  header('xx.php'?data1=1&data2=2');
?>

_REQUEST变量

含义: 它是$_GET变量和$_POST变量的合集。

_SERVER变量

含义:代表一次浏览网页的过程中的浏览器端的信息或服务器端的信息。

程序可以拿到这些信息,并用于编程所需. 如获取用户ip。

大约有30个左右,我们只需要其中5个左右。

$_SERVER['REMOTE_IP']; 访问者的ip地址
$_SERVER['SERVER_IP']; 服务器所在ip地址
$_SERVER['SERVER_NAME']; 服务器名字(站点设置中的servename)
$_SERVER['DOCUMENT_ROOT']; 获取物理地址,就是站点设置中的Documentroot
$_SERVER['PHP_SELF']; 获取当前网页地址(不含域名)
$_SERVER['QUERY_STRING']; 当前网页的get数据(`?`后面的整个字符串)

print_r($_SERVER)

GLOABLE变量

含义: 也是一个“重复性数据”。里面存储了我们自己定义的所有的全局变量

举例:

$v1 = 1; //定义了一个全局变量 
此时,就有这样一个数据$GLOBALS['v1'],其值就是1.
echo $GLOBALS['V1']; //输出1

这个变量,主要是用户在局部范围不可以使用全局变量的时候,有需要改全局变量的值。可以用这个取得该全局变量的值。