• 3_PHP表达式_2_变量


    以下为学习孔祥盛主编的《PHP编程基础与实例教程》(第二版)所做的笔记。

    PHP变量可分为自定义变量和预定义变量。

    以下所谈到的变量均为自定义变量。

    1.变量的基本概念

      PHP的变量名遵循以下规则:

        (1)变量名必须以美元符号($)开头,如$username。

        (2)变量名的第一个字符必须是字母或下画线(不能是数字),变量名称可以为字母、数字和下画线的组合,如$user_name_1。

        (3)PHP中的变量名是区分大小写的。这意味着$userName和$UserName是截然不同的两个变量。

      和传统的高级语言不一样,PHP对于已经定义的变量可以通过重新赋值的方法修改该变量的值,甚至修改该变量的数据类型。

     1 <?php
     2 //以下语句修改$userName变量的值
     3 $userName="张三";
     4 $userName="李四";
     5 
     6 //以下语句既修改$sex变量的值,又修改了$sex变量的数据类型
     7 $sex=FALSE;
     8 $sex="男";
     9 
    10 echo $userName;
    11 echo "<br/>";
    12 echo $sex;
    13 ?>

    输出:

    李四
    男

    2.变量的赋值方式

      变量赋值是指赋予变量具体的数据,使用赋值运算符 “ = ” 来实现。

      PHP提供两种赋值方式:传值赋值和传地址赋值。

    (1)传值赋值方式

      传值赋值方式将一个值 “ 拷贝 ”赋值给某个变量。  

     1 <?php
     2 $age1 = 18;
     3 //以下语句进行传值赋值,变量$age1的值18赋值给变量$age2
     4 $age2 = $age1;
     5 //以下语句修改变量$age2的值,此时变量$age2在内存中开辟新空间存储值20
     6 $age2 = 20;
     7 echo $age1; //该语句输出$age1变量的值为18
     8 echo "<br/>";
     9 echo $age2; //该语句输出$age2变量的值为20
    10 ?>

    输出:

    18
    20

    说明:

    ① 程序执行 “ $age2 = $age1 ” 后,内存中并没有新增 $age2 的变量值18,这是由于PHP为了提高内存的使用效率,采用了 “ 写时拷贝 ”的原理对变量进行赋值。简言之,除非发生写(或修改)操作,否  则指向同一个地址的变量值对象将不会被拷贝,这样即节省内存又提高了代码的执行效率。

    ② 执行 " $age2 = 20; " 语句后,内存才添加了变量 $age2 的变量值20。

    (2)传地址赋值方式

      传地址赋值是将源变量的内存地址赋值给新的变量,即新的变量引用了源变量的值,改动新变量的值将影响到源变量的值,反之亦然。传地址赋值意味着两个变量都指向同一个数据,不存在任何数据的拷贝过程。PHP通过在源变量($oldVariable)前追加 “ & “ 符号实现传地址赋值,语法格式为: $newVariable = &$oldVariable。

    <?php
    $age1 = 18;
    //进行传地址赋值,变量$age1的地址(引用)赋值给变量$age2
    $age2 = &$age1;
    $age2 = 20;
    echo $age1;     //该语句输出$age1变量的值为20
    echo "<br/>";
    echo $age2;     //该语句输出$age1变量的值为20
    ?>

    输出:

    20
    20

    说明:

    ① 程序执行 " $age2 = &$age1 " 后,变量 $age2与变量 $age1 指向了内存中的同一个变量值18。

    ② 程序执行 “ $age = 20 ” 语句后,变量 $age2 与变量 $age1 指向了内存中同一个变量值20。

    3.可变变量

      可变变量允许PHP程序动态地改变一个变量的变量名,可变变量的工作原理是用一个变量的 “ 值 ” 作为另一个变量的 “ 名 ”。

    1 <?php
    2 $varname = "age";
    3 //用$$varname取代$age。下面代码等价于: $age = 20;
    4 $$varname = 20;
    5 echo $age; //输出$age变量的值:20
    6 ?>

    输出:

    20
  • 相关阅读:
    状态压缩dp未吃透の笔记
    洛谷blog传送门qwq
    线段树学习总结(Do not be the cheater)
    第三届NOI Online普及组线上比赛赛后总结
    第三届NOI Online入门组第三题 手表(watch)题解
    P1162 填涂颜色 题解(勿抄袭)
    4980:拯救行动 题解
    P1433 吃奶酪 题解(勿抄袭)
    Mysql-多表数据记录查询
    java-多线程
  • 原文地址:https://www.cnblogs.com/xiaoxuStudy/p/11603262.html
Copyright © 2020-2023  润新知