PHP语法基础篇:变量与数据类型

"本文是PHP语法学习的第一篇,将聚焦最基础的三个部分:

  1. 基本语法结构:PHP文件格式、注释写法
  2. 变量使用:变量声明、命名规范、作用域初探
  3. 数据类型:整型、浮点型、字符串、布尔型等数据类型的特性和用法
    通过代码示例,帮助零基础开发者快速建立PHP语法认知框架。"
    目录

一、基本语法

1、文件格式

2、注释

二、变量

1、变量的声明

2、变量的作用域

2.1、全局和局部作用域

2.2、global关键字

2.3、静态变量

三、数据类型

[1、String 字符串](#1、String 字符串)

[2、Integer 整型](#2、Integer 整型)

[3、Float 浮点型](#3、Float 浮点型)

[4、Boolean 布尔类型](#4、Boolean 布尔类型)

[5、Array 数组](#5、Array 数组)

[6、Object 对象](#6、Object 对象)

7、NULL

[8、Resource 资源类型](#8、Resource 资源类型)

9、更改数据类型


一、基本语法

1、文件格式

PHP脚本在服务器上执行,并将纯HTML结果发送回浏览器,PHP脚本可以放置在文档中的任何位置。

PHP 脚本以**<?php** 开头,以 ?> 结尾:

php 复制代码
<?php
// PHP 代码写在这里
?>

PHP文件的默认文件扩展名是 ".php"。

PHP文件通常包含HTML标签和一些PHP脚本代码。

下面是一个简单的PHP文件示例,其中包含一段PHP脚本,该脚本使用内置的PHP函数 "echo"(该函数会在后续的文章中进行说明) 在网页上输出文本 "Hello World!":

php 复制代码
<!DOCTYPE html>
<html>
    <body>
        <h1>My first PHP page</h1>
        <?php
        echo "Hello World!";
        ?>
    </body>
</html>

注意:PHP语句以英文分号 (;) 结尾。

页面输出如下图所示:

如果文件内容仅仅包含PHP代码,最好在文件末尾删除 PHP 结束标记。这可以避免在PHP结束标记之后万一意外加入了空格或者换行符,会导致PHP开始输出这些空白,而脚本中此时并无输出的意图。

php 复制代码
<?php
echo "Hello world";

// ... 更多代码

echo "Last statement";

// 脚本在此处结束,没有 PHP 结束标记

2、注释

PHP支持C、C++和Unix Shell风格的注释,代码中注释的语法如下所示:

php 复制代码
// 这是一个单行注释

# 这也是一个单行注释

/* 这是一个
多行注释 */

在注释的使用上选择你习惯的方式即可。由于我个人主要是做Java,所以我之后的文章单行注释会采用 // ,多行注释会使用 /* */,在此做一下说明。


二、变量

1、变量的声明

PHP中的变量用一个美元符号( **** )后面跟变量名来表示。 **变量名是区分大小写的**。 变量可以有一个简短的名称(如 x 和 y)或更具描述性的名称( age, carname, total_volume)。
PHP 变量的命名规则:

  • 变量以 $ 符号开头,后跟变量变量名
  • 必须以字母或下划线字符开头
  • 变量名不能以数字开头
  • 变量名只能包含字母数字字符和下划线(A−z、0−9 和 _ )
  • 变量名区分大小写(age 和 AGE 是两个不同的变量)

注意:PHP的变量是以 "$" 符号开头,这一点尤其要注意,因为在其它的编程语言中,如Java、C、Python中,变量是没有明确以特定符号作为开头的,所以这一点需要额外注意。

变量声明示例:

php 复制代码
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var";      // 输出 "Bob, Joe"

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

2、变量的作用域

变量的作用域即它定义的上下文背景(也就是它的生效范围,可被引用/使用的位置)。
PHP有三种不同的变量作用域:

  • local:局部变量
  • **global:**全局变量
  • **static:**静态变量

2.1、全局和局部作用域

在函数外部声明的变量具有全局作用域,并且只能在函数外部访问。这一点是需要注意的,因为在其它编程语言中,函数内部是可以访问全局变量的。

示例:

php 复制代码
$x = 5; // 全局作用域

function myTest() {
  // 在此函数中使用 x 将生成错误
  echo "<p>函数内的变量 x 是:$x</p>";
}
myTest();

页面显示:

可以看到,程序执行出错。错误信息显示:$x 变量是未定义的。通过这个示例展示了全局变量在函数内部是无法访问的。

在函数内部声明的变量具有局部作用域,并且只能在该函数内部访问。

php 复制代码
function myTest() {
  $x = 5; // 局部作用域
  echo "<p>函数内的变量 x 是:$x</p>";
}
myTest();

// 在函数外部使用 x 将生成错误
echo "<p>函数外的变量 x 是:$x</p>";

页面显示:

通过程序执行结果可以看到,局部变量在函数内部是可以访问到的,但是在函数外部就无法访问到了,并且会报错,显示的错误信息为变量未定义。

2.2、global关键字

上文中说到,全局变量只能在函数外部声明和在函数外部访问,那么如果要在函数内部访问全局变量应该如何做呢?

global 关键字用于从函数内部访问全局变量。使用方法也很简单,只需要在函数内部需要访问的全局变量前使用global关键字即可。

示例:

php 复制代码
$x = 2;
$y = 5;

function myTest() {
  global $x, $y; // $x,$y 为全局变量,如果要在内部函数中访问,则需要在变量前使用 global 关键字
  $y = $x * $y;
}

myTest();
echo $y; // 输出 10

在函数内部除了使用global关键字访问全局变量外,还有一种方法可以用于在函数内访问全局变量,该方法就是使用 **$GLOBALS[index]**数组。

PHP将所有全局变量存储在名为 **$GLOBALS[index]**的数组中。index 保存变量的名称。该数组可以在函数内部访问,并且可以用于直接更新全局变量。

上面的示例可以改写为:

php 复制代码
$x = 2;
$y = 5;

function myTest() {
  $GLOBALS['y'] = $GLOBALS['x'] * $GLOBALS['y'];
}

myTest();
echo $y; // 输出 10

2.3、静态变量

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

示例:

php 复制代码
function test()
{
    static $a = 0;
    echo $a;
    $a++;
}

test(); // 输出0
test(); // 输出1
test(); // 输出2

变量 a 仅在第一次调用test()函数时被初始化,之后每次调用test()函数都会输出 a 的值并加一。

注意:该变量仍然是函数的局部变量。


三、数据类型

PHP是动态类型语言,这意味着默认不需要指定变量的类型,因为会在运行时确定。PHP 支持以下数据类型:

  • 字符串(String)
  • 整型(Integer)
  • 浮点型(Float)
  • 布尔类型(Boolean)
  • 数组(Array)
  • 对象(Object)
  • NULL
  • 资源类型(Resource)
    由于PHP是动态语言,所以在声明变量的时候不需要指定数据类型,如果要想知道变量的数据类型是什么,可以使用 var_dump() 函数来获取对象的数据类型。
    示例:
php 复制代码
$x = 5;
var_dump($x);

页面显示:

1、String 字符串

一个字符串就是由一系列的字符组成,其中每个字符等同于一个字节。

字符串引号内可以包含任何文本,引号可以是单引号或双引号。

示例:

php 复制代码
$x = "我是双引号内的字符串";
$y = '我是单引号内的字符串';

echo $x;
echo "<br>";
echo $y;

如果字符串是包围在双引号(")中, PHP 将对以下特殊的字符进行解析:

2、Integer 整型

整型数据类型是整数,范围在 -2,147,483,648 到 2,147,483,647 之间。可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。

要使用八进制表达,数字前必须加上 0(零)。 PHP 8.1.0 起,八进制表达也可以在前面加上 0o 或者 0O 。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b。

示例:

php 复制代码
$a = 1234; // 十进制数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
$a = 0b11111111; // 二进制数字 (等于十进制 255)

3、Float 浮点型

浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义:

php 复制代码
$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;

4、Boolean 布尔类型

布尔类型仅有两个值,用于表达真值,不是 true 就是 false

要指定一个布尔类型的值,使用常量 truefalse。两个都不区分大小写。

示例:

php 复制代码
$foo = True; // 设置 $foo 为 TRUE

5、Array 数组

数组可以在单个变量中存储多个值。

在下面的示例中,$cars 是一个数组。(数组的内容后续会有专门的篇章进行详细说明)

php 复制代码
$cars = array("奔驰","宝马","奥迪");

6、Object 对象

类和对象是面向对象编程的两个主要方面,该内容会在后续的面向对象篇章中进行详细说明。在此只需要知道对象是PHP中的一种数据类型即可。

7、NULL

NULL是一种特殊的数据类型,它只有一个值:NULL。数据类型为NULL的变量是没有为其分配值的变量。

提示:如果变量已创建但未赋值,它将自动被赋值为NULL。也可以通过将值设置为NULL来清空变量:

php 复制代码
$x = "Hello world!";
var_dump($x);
$x = null;
var_dump($x);

8、Resource 资源类型

资源是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。这是官方文档中的解释,该数据类型是我在Java编程语言中不曾见过的,所以只看定义是不明白它是做什么的,而我现在也觉得没有必要花时间在该数据类型上面,所以决定先放置,以后用到了再说。如果阅读文章的您对该类型有了解的话,可以在评论区告诉我,在此表示感谢。

9、更改数据类型

由于PHP是动态语言,所以我们可以随时改变变量的数据类型,只需要对该变量赋值不同数据类型的值就可以改变变量的数据类型。

示例:

php 复制代码
$x = 5; // 此时变量 $x 为整型
var_dump($x);

$x = "Hello"; // 此时变量 $x 的数据类型为字符串型
var_dump($x);

页面显示:

**动手是掌握语法的捷径!**本文介绍了PHP的变量声明与基础数据类型,建议在phpStudy中逐行测试文中代码。

相关推荐
AI风老师2 小时前
通信网络基础概念
开发语言·网络·php
链上Sniper5 小时前
区块链架构深度解析:从 Genesis Block 到 Layer 2
开发语言·网络·架构·区块链·php
hymuuuu6 小时前
【源码】研学报名小程序开发功能分析案例
mysql·php·需求分析
亿坊电商8 小时前
PHP框架在内容管理系统开发中的优势:效率、安全与扩展性!
开发语言·安全·php
开***能10 小时前
Modbus TCP转DeviceNet网关配置温控仪配置案例
网络协议·tcp/ip·php
黑眼圈的小熊猫14 小时前
项目-- Json-Rpc框架
rpc·json·php
没有黑科技20 小时前
如何区分5G网络基站是SA或NSA?
网络·5g·php
YUJIANYUE1 天前
PHP7+MySQL5.6 雪里开简易预约制访客管理系统V1.0
mysql·php
EndingCoder1 天前
网络请求与本地存储:Axios 与 AsyncStorage 在 React Native 中的应用
网络·react native·php