什么是变量

变量通俗的来说是一种容器。根据变量类型不同,容器的大小不一样,自然能存放的数据大小也不相同。在变量中存放的数据,我们称之为变量值。

PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。在PHP中变量的命名规则通常是以字母或下划线开头,由字母、数字、下划线组成。变量名通常由声明变量所代表意义的英文单词组成。单词与单词之间通过_分隔,或者第一个单词首字母小写,之后每个单词首字母大写。这种命名方式我们称之为驼峰命名法。良好的命名规范有助于提高我们代码的可读性。

1

2

3

4

5

6

7

<?php

    $name = '屋脊猫';

    $_age = 1;

    $sex = '男';       

    echo "姓名:{$name},年龄:{$_age}, 性别:{$sex}";

    $1sex = '男'// 错误,不能以数字开头

?>

变量的初始化

变量的初始化是给变量设置一个默认值(或者是需要的值),初始化的过程中PHP会给变量分配存储空间以及将变量值所在存储空间地址保存在变量中。

1

2

3

<?php

    $a = 1; // 初始化一个整形变量

?>

虽然在PHP中不需要初始化变量,但对变量进行初始化是个好习惯。未初始化的变量具有其类型的默认值

● 布尔类型的变量默认值是 FALSE

● 整形和浮点型变量默认值是零

● 字符串型变量(例如用于 echo 中)默认值是空字符串

● 数组变量的默认值是空数组

使用未初始化的变量会发出 E_NOTICE错误,但是在向一个未初始化的数组附加单元时不会。

依赖未初始化的变量的默认值在某些情况下会有问题,比如在之后的编码中我们需要经常的将一个文件通过include包含到当前文件,如果两个文件中有相同的变量名,此时的变量值则不是我们需要的默认值了。另外在PHP 5.4.0之前的版本中把 register_globals打开是一个主要的安全隐患。在PHP 5.4.0之后该配置已被移除。

变量的赋值方式

在PHP中有两种传值方式,分别为传值赋值和引用赋值。

1.传值赋值

传值赋值是PHP中默认的传值方式。那也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。如:

1

2

3

4

5

6

7

<?php

    $var1 = 1;

    $var2 = $var1;

    $var1 = 3;

    echo $var1;     // 3

    echo $var2;     // 1

?>

2.引用赋值

引用赋值意味着新的变量简单的引用了原始的变量,改变了新的变量的值将影响到原始的变量的值,反之亦然。使用引用赋值,只需简单地将一个 & 符号加到将要赋值的变量前(源变量)如:

1

2

3

4

5

6

7

<?php

    $oldVar = 1;

    $newVar = &$oldVar;

    $newVar = 2;

    echo $oldVar;   // 2

    echo $newVar;   // 2

?>

&符在C语言中称之为取地址符,变量保存了变量值在内存中的存储地址,通过取地址符可以将一个变量保存的变量值的地址赋值给另一个变量。两个变量的值指向了同一个内存地址,所以当我们修改其中一个变量的值时,另一个变量的值自然而然的随之被改变。

有一点重要事项必须指出,那就是只有有名字的变量才可以引用赋值。

1

2

3

4

5

<?php

    $foo = 25;

    $bar = &$foo;      // 合法的赋值

    $bar = &(24 * 7);  // 非法; 引用没有名字的表达式

?>

在(24*7)这个表达式中因为没有保存在变量中,所以没有明确的内存地址,通过取地址符去获取在内存中存储的地址是不可取的。

明确的学习思路能更高效的学习

点击加入该群学习

PHP变量的初始化以及赋值方式介绍的更多相关文章

  1. vector的几种初始化及赋值方式

    转自https://www.cnblogs.com/quyc/p/12857054.html (1)不带参数的构造函数初始化 //初始化一个size为0的vector vector<int> ...

  2. Java中final变量的初始化方式

    原文转自:http://blog.csdn.net/zhangjk1993/article/details/24196847 public class FinalTest1 { //--------- ...

  3. c++构造函数成员初始化中赋值和初始化列表两种方式的区别

    先总结下: 由于类成员初始化总在构造函数执行之前 1)从必要性: a. 成员是类或结构,且构造函数带参数:成员初始化时无法调用缺省(无参)构造函数 b. 成员是常量或引用:成员无法赋值,只能被初始化 ...

  4. GO学习笔记 - 变量在定义时没有明确的初始化时会赋值为“零值 ”。

    官方教程:https://tour.go-zh.org/basics/12 变量在定义时没有明确的初始化时会赋值为 零值 . 零值是: 数值类型为 0 , 布尔类型为 false , 字符串为 &qu ...

  5. oracle 存储过程 变量的声明和赋值的3种方式

      oracle 存储过程 变量的声明和赋值的3种方式 CreationTime--2018年8月31日16点00分 Author:Marydon 1.声明变量的3种方式 按照数据类型的声明方式进行区 ...

  6. c语言学习笔记-变量、变量的命名、变量的赋值和变量的初始化

    在学习了简单的输入输出功能和了解了一些基本的运算符号之后我们可以试着做一个非常简单的计算器. 比如说想计算23+65 输入以下代码就可以了. printf("23+65=%d",2 ...

  7. C语言指针的初始化和赋值

    1.指针的初始化 指针初始化时,"="的右操作数必须为内存中数据的地址,不能够是变量,也不能够直接用整型地址值(可是int*p=0;除外,该语句表示指针为空).此时,*p仅仅是表示 ...

  8. javascript 变量的引入、变量的声明、变量的初始化

    变量的引入及声明和初始化: 变量: 操作的数据都是在内存中操作 Js中存储数据使用变量的方式(名称,值--->数据) Js中声明变量都用var--->存储数据,数据应该有对应的数据类型 存 ...

  9. (转)C++初始化与赋值

    来源:http://www.cnblogs.com/chio/archive/2008/10/06/1305145.html 先来个区别说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一 ...

随机推荐

  1. QButtonGroup 的使用

    1.3以后尽量手写,因为没有现在的控件了 2. // lyy : 2016/8/26 12:17:41 说明:存放radioButton QButtonGroup *buttonGroup; // l ...

  2. task一个任务结束后执行另一个操作

    //创建一个任务 Task<int> task = new Task<int>(() => { ; //显示进度条遮照层, this.ShowPrograssBar(); ...

  3. MongoDB实现问卷/考试设计

    MongoDB的特点 MongoDB是一个面向文档存储的数据库.在MongoDB中,一条记录叫做document(文档),由类似于JSON结构的键值对组成. 由于类似于MongoDB直接存储JSON的 ...

  4. [NOI2001]食物链(并查集拓展域)&& [HAOI2006]旅行(Kruskal)

    题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ...

  5. Linux sh脚本用spool导出oracle数据库指定表表数据

    脚本如下,已验证可用,可配合crontab使用. 1 #!/bin/bash cd /opt/oracle/datafor_kf #redirect environment variables sou ...

  6. Windows 10 中CPU虚拟化已开启,但是docker无法运行

    在管理员模式下的PowerShell中执行: bcdedit /set hypervisorlaunchtype Auto 然后重启电脑即可

  7. 【Maven学习笔记】mvn help:system 命令的说明

    mvn help:system 命令的说明 笔者用得是windows 10 x64系统 下载了Maven3,正确配置了系统变量M2_HOME的值,并且添加到Path变量路径当中. 简单来说,Maven ...

  8. C语言I—2019秋作业01

    1您对软件工程专业或计算机科学与技术专业了解是什么? 工程专业将成为一个新的热门专业.软件工程专业以计算机科学与技术学科为基础,突出软件开发的工程性,使学生在掌握计算机科学与技术方面知识和技能的基础上 ...

  9. [Jupyter Notebook]Notebook添加Ancona虚拟环境

    1.首先安装ipykernel:conda install ipykernel 解决安装ipykernel权限报错问题 wangbin@Skyell_Cloud:~$ sudo chown -R wa ...

  10. python学习之【第三篇】:Python中的字符串及其所具有的方法

    1.前言 字符串str是Python中最常用的数据类型.我们可以使用单引号''或双引号""包裹一段字符来创建字符串. 2.字符串创建 str1 = 'hello world' st ...