首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP 变量与常量

PHP 变量与常量

作者头像
学院君
发布2020-05-27 22:59:33
4.8K0
发布2020-05-27 22:59:33
举报
文章被收录于专栏:学院君的专栏学院君的专栏

0、引言

在之前的入门篇教程中,我们已经见识了如何搭建 PHP 本地开发环境,选择一款适合自己的 PHP 代码编辑器,并编写了一个最简单的 PHP 程序,以及在 HTML 中嵌入 PHP 脚本,算是熟悉了 PHP 代码的基本开发和运行流程。

从今天开始,我们将花几个篇幅的教程快速过一下 PHP 基本语法,包括变量、常量、基本数据类型、数组(索引数组和关联数组)、函数(自定义函数、匿名函数、PHP 常用内置函数库)、请求数据处理(包含 Cookie 和 Session)、数据库操作等,所有这些基于函数式编程进行演示。

1、变量

变量声明和初始化

首先来看变量。回顾下我们在第一个 PHP 程序中编写的代码:

<?php

echo "你好,学院君!";

这里我们打印的字符串实际上是以字面量(literal)的方式定义的,我们还可以通过变量的方式先声明并初始化,再引用。在 php_learning 项目目录下创建 basic 子目录,用于存放 PHP 基本语法教程代码,这里我们先创建一个 var.php,并初始化代码如下:

我们通过 $greeting 来声明这个欢迎字符串变量,并将其初始化为 你好,PHP!,这里需要注意的是 PHP 是弱类型语言,变量类型在运行时确定,所以不需要声明数据类型,另外,PHP 变量的声明和初始化是一步完成的,不需要也不支持单独的声明语句。

声明为变量的好处是一次声明,多次使用,后续再要打印 你好,PHP!,只需要引用 $greeting 这个变量即可:

<?php

$greeting = "你好,PHP!";
echo $greeting . PHP_EOL;

printf("%s\n", $greeting);

其中 PHP_EOL 是 PHP 内置的跨平台换行符常量,PHP 中字符串连接通过 . 完成,所以我们在待打印字符串之后通过 . 连接 PHP_EOL 表示紧随其后进行换行。printf 是 PHP 内置的格式化输出字符串函数,%s 表示以字符串形式输出变量,在命令行运行上述代码,输出如下:

运行时修改变量值

使用变量的另一个好处是,我们可以在运行期间对变量值进行修改:

<?php

$greeting = "你好,PHP!";
echo $greeting . PHP_EOL;
printf("%s\n", $greeting);

$greeting = "你好,学院君!";
echo $greeting;

输出如下:

变量名规则

关于 PHP 变量的基本使用就是这些,非常简单,下面我们来介绍下变量名格式要求,当我们声明一个 PHP 变量的时候,需要符合以下要求:

  • $ 开头(坊间戏言,PHP 程序员是有多穷,才要求变量名以货币符号开头?);
  • $ 之后具体的变量名只支持字母(支持中文字符,不过我们尽量使用 ASCII 字符,以免出现意想不到的问题)、数字、下划线,并且不能以数字开头;

由于 PHP 变量名都以 $ 作为前缀,所以支持将系统关键字和保留字作为变量名。

我们来看一些变量名格式的示例,前面四个满足要求,是合法变名,后面三个不满足要求,PhpStorm 会进行报错提示,执行时也会报错:

另外,PHP 变量名大小写敏感,变量名一致,大小写不一致,会被看作不同的变量:

<?php

$greeting = "你好,PHP!";
$Greeting = "你好,学院君!";
echo $greeting . PHP_EOL;
echo $Greeting . PHP_EOL;

以上代码的打印结果是:

你好,PHP!
你好,学院君!
可变变量

PHP 作为动态弱类型语言,变量声明和使用非常灵活,除了不指定类型的声明和初始化之外,还可以在变量名中引用变量,从而实现可变变量的功能,具体的实现也非常简单,就是在变量名前再加上一个 $ 前缀,将对应变量值作为一个变量名进行引用。

我们来编写一段示例代码进行演示:

<?php 

$greeting = "你好,PHP!";
$varName = "greeting";
echo $$varName;

上述代码的执行结果是:

你好,PHP!

因为 $varName 的变量值是 greeting,所以当我们调用 $$varName 时,$varName 被替换成 greeting,因此实际上引用的是 $greeting,由于 $varName 的值可以动态设置,所以也就可以实现了一个可变变量。

2、常量

常量与变量相对,变量可以在运行期间修改,而常量一经定义就不能进行变更,因此常量存在的意义就是设置运行期「只读变量」,保护「这些变量」运行期间不被更改。

通过 define 函数设置

在 PHP 中定义常量有两种方式,一种是遵循 C 语言的宏定义语法,通过 define 函数设置,我们在 php_learning/basic 目录下新增 const.php,通过 define 函数设置常量:

<?php

define("LANGUAGE", "PHP");
define("AUTHOR", "学院君");

echo LANGUAGE . ": " . AUTHOR . PHP_EOL;

在上述代码中设置了两个常量,LANGUAGEAUTHOR,常量名不需要 $ 前缀(也不能设置),并且为了和变量做区分,通常都是以大写字母进行命名(同样大小写敏感),此外,常量名的命名规则除了不需要 $ 前缀之外,其他和变量名一样,只支持字母、数字、下划线,并且不能以数字开头。

如果我们试图在常量设置之后进行修改会报解析错误:

此外,通过 define 定义的常量全局有效,所以通常在项目初始化期间通过这种方式定义全局常量。

通过 const 修饰符设置

另外,PHP 还支持以 const 修饰符的方式定义常量,这种定义方式通常用于在类中设置只读属性(类常量),不过也可以在 PHP 文件中使用:

<?php

define("LANGUAGE", "PHP");
define("AUTHOR", "学院君");

const FRAMEWORK = "Laravel";
echo LANGUAGE. '-' . FRAMEWORK . '-' . AUTHOR . PHP_EOL;

使用 const 修饰符定义的常量命名规则和 define 完全一致,并且不能定义已经在 define 中声明过的常量,具体细节不再重复介绍,上述代码的执行结果是:

PHP-Laravel-学院君

关于 PHP 中的变量和常量我们就简单介绍到这里,到目前为止,我们所有的示例代码都是围绕字符串展开的,下一篇教程,我们来介绍 PHP 中的其他基本数据类型及其使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客书房 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、变量
    • 变量声明和初始化
      • 运行时修改变量值
        • 变量名规则
          • 可变变量
          • 2、常量
            • 通过 define 函数设置
              • 通过 const 修饰符设置
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档