美文网首页
3.PHP变量

3.PHP变量

作者: 三生石的等待 | 来源:发表于2018-05-23 10:04 被阅读0次

变量定义和命名规范

变量定义

PHP 中的变量用一个美元符号 $ 后面跟变量名来表示。

命名规范

变量名区分大小写,一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。

<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var";      // 输出 "Bob, Joe"

$4site = 'not yet';     // 非法变量名;以数字开头
$_4site = 'not yet';    // 合法变量名;以下划线开头
$i站点is = 'mansikka';  // 合法变量名;可以用中文
?> 

传值和引用

传值

变量默认总是传值赋值。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。

<?php

$a = 'hello';
$b = $a;
$a = 'hi';

var_dump($a,$b);
引用

PHP 也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量相当于原变量的别名,改动新的变量将影响到原始变量,反之亦然。

使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前

<?php

$a = 'hello';
$b = &$a;
$a = 'hi';

var_dump($a,$b);

结果为

string(2) "hi"
string(2) "hi"

有一点重要事项必须指出,那就是只有有名字的变量才可以引用赋值。例如,&(2 * 3) 为非法形式。

<?php

$a = 'a';
$b = $$a;
$c = &$a;
$d = &$b;

$a = 'b';

var_dump($a,$b,$c,$d);

预定义变量

PHP 提供了大量的预定义变量。其中一些变量依赖于运行的服务器的版本和设置,及其它因素。

  • $GLOBALS — 引用全局作用域中可用的全部变量
  • $_SERVER — 服务器和执行环境信息
  • $_GET — HTTP GET 变量
  • $_POST — HTTP POST 变量
  • $_FILES — HTTP 文件上传变量
  • $_REQUEST — HTTP Request 变量
  • $_SESSION — Session 变量
  • $_ENV — 环境变量
  • $_COOKIE — HTTP Cookies
  • $php_errormsg — 前一个错误信息
  • $HTTP_RAW_POST_DATA — 原生POST数据
  • $http_response_header — HTTP 响应头

以下预定义变量只在命令行执行的时候生效

  • $argc — 传递给脚本的参数数目
  • $argv — 传递给脚本的参数数组

变量范围

变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。例如:

<?php
$a = 1;
include 'b.php';

这里变量 $a 将会在包含文件 b.php 中生效。但是,在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。

<?php

$hi = 'Hi';
$hello = 'Hello';

function sayHi()
{
    echo $hi;
}

function sayHello($hello)
{
    echo $hello;
}

sayHi();
sayHello($hello);

从结果中可以看出,函数要使用外部变量可以通过传参实现,此外还可以使用全局变量。

全局变量

全局变量通常使用关键字 global 来声明

<?php

$a = 1;
$b = 2;

function sum()
{
    global $a, $b;
    $b = $a + $b;
}

sum();
echo $b;

结果输出 3。在函数中声明了全局变量 $a 和 $b 之后,对任一变量的所有引用都会指向其全局版本。对于一个函数能够声明的全局变量的最大个数,PHP 没有限制。
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:

<?php

$a = 1;
$b = 2;

function sum()
{
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}

sum();
echo $b;

静态变量

变量范围的另一个重要特性是静态变量。静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。

<?php

function test()
{
    $a = 0;
    echo $a;
    $a++;
}

每次调用时都会将 $a 的值设为 0 并输出 0。将变量加一的 $a++ 没有作用,因为一旦退出本函数则变量 $a 就不存在了。
要写一个不会丢失本次计数值的计数函数,要将变量 $a 定义为静态的:

<?php

function test()
{
    static $a = 0;
    echo $a.PHP_EOL;
    $a++;
}

test();
test();

可变变量

一个变量的变量名可以动态的设置和使用,例如:

<?php

$a = 'hello';
$$a = 'world';

var_dump($a,$hello);

动态设置了一个变量 $hello,通常多个 $ 会依次从最后边开始解析,最后生成 $ 前一个值为名称的变量。

<?php

$a = 'b';
$b = 'c';
$c = 'd'

$$$a = 'bcd';

var_dump($d);

相关文章

  • 3.PHP变量

    变量定义和命名规范 变量定义 PHP 中的变量用一个美元符号 $ 后面跟变量名来表示。 命名规范 变量名区分大小写...

  • 3.php变量

    注意事项:变量名区分大小写, 变量名必须以 $开头

  • 3.php变量类型

    变量 基本理解 可以存储可变数据的标识符——就是一个我们自己定义的名字。 变量的基本操作 1.赋值:$变量名 = ...

  • 3.php变量类型

    1.四种标准 布尔类型:两种true,false,一般用于条件判断的结果。 浮点类型:就是带有小数点的数字。 整数...

  • php一些基础知识

    1.php定界符:可以写在页面的任意位置 2.php注释:写在php定界符之内 3.php变量 预定义变量 4.p...

  • 3.PHP入门-语法概述(二)变量

    和其他语言一样,php使用变量来存储信息的"容器": 与代数类似 在 PHP 中,这些字母被称为变量。 PHP变量...

  • 2019-01-27 tp5.1

    1.php数组的删除 2.支持对路由参数的可选定义 3.PHP判断变量是否为空 4.foreach循环 5.php时间戳

  • 3.php

    1.php配置

  • PHP探针

    1.代码 2.效果 3.PHP前沿学习群: 257948349

  • Element数据分页

    1.显示表格 2.请求数据js代码 3.PHP代码查询

网友评论

      本文标题:3.PHP变量

      本文链接:https://www.haomeiwen.com/subject/opwljftx.html