PHP快速入门02-PHP语言基础

简介: 万丈高楼平地起,本节内容将带大家一起了解PHP的数据类型,常量与变量,条件语句,循环语句,对象数组,函数与命名空间等相关知识。

@TOC


前言

本文已收录于PHP全栈系列专栏:PHP快速入门与实战,基础是任何一门语言都必须学习的,万丈高楼平地起。本节内容将带大家一起了解PHP的数据类型,常量与变量,条件语句,循环语句,对象数组,函数与命名空间等相关知识。
在这里插入图片描述

一、 数据类型

PHP 中主要支持 String(字符串),Integer(整型),Float(浮点型),Boolean(布尔型),Array(数组),Object(对象),NULL(空值),Resource(资源类型)这些数据类型。具体的使用说明举例如下。

1.1 String(字符串)

在PHP中,字符串是一种常用的数据类型,可以存储文本数据。例如:

$name = "John Doe"; // 定义一个字符串变量
echo $name; // 输出结果为 John Doe

1.2 Integer(整型)

整型是PHP中表示整数的数据类型,例如:

$num1 = 10; // 定义一个整型变量
$num2 = 20;
{
   
   mathJaxContainer[0]}num1 + $num2; // 对整型变量进行计算
echo $sum; // 输出结果为 30

1.3 Float(浮点型)

浮点型是PHP中表示小数的数据类型,例如:

$price = 9.99; // 定义一个浮点型变量
$quantity = 3;
{
   
   mathJaxContainer[1]}price * $quantity; // 对浮点型变量进行计算
echo $total; // 输出结果为 29.97

1.4 Boolean(布尔型)

布尔型是PHP中表示真或假的数据类型,例如:

$is_male = true; // 定义一个布尔型变量
if ($is_male) {
   
   
   echo "Male"; // 输出结果为 Male
} else {
   
   
   echo "Female";
}

1.5 Array(数组)

数组是一种可以存储多个值的数据类型,例如:

$fruits = array("apple", "banana", "orange"); // 定义一个数组变量
echo $fruits[0]; // 输出结果为 apple

1.6 Object(对象)

对象是一种可以封装数据和方法的数据类型,例如:

class Person {
   
   
   public $name;
   public function sayHello() {
   
   
      echo "Hello, my name is " . $this->name;
   }
}
$person = new Person(); // 创建一个对象
$person->name = "John"; // 设置对象属性
$person->sayHello(); // 调用对象方法,输出结果为 Hello, my name is John

1.7 NULL(空值)

NULL表示变量没有值,例如:

$age = null; // 定义一个空值变量
if (is_null($age)) {
   
   
   echo "Age is not set"; // 输出结果为 Age is not set
}

1.8 Resource(资源类型)

资源类型是一种可以指向外部资源的数据类型,例如:

$file = fopen("file.txt", "r"); // 打开文件,返回一个指向资源的句柄
echo fread($file, filesize("file.txt")); // 读取文件内容并输出
fclose($file); // 关闭文件

二、 常量与变量

2.1 define 常量的定义与使用

在PHP中,常量是固定值,一旦定义就不能被修改或取消定义。以下是一些常量的使用示例:

  1. 定义一个常量:
    define("MY_CONST", "Hello World!"); // 定义一个名为 MY_CONST,值为 "Hello World!" 的常量
    
  2. 使用常量:
    echo MY_CONST; // 输出结果为 Hello World!
    
  3. 检查常量是否已定义:
    if (defined("MY_CONST")) {
         
         
    echo "MY_CONST is defined!"; // 如果 MY_CONST 已定义,输出结果为 MY_CONST is defined!
    }
    

    2.2 const 常量的定义与使用

    PHP中的const关键字用于定义常量,其值在定义后不能被修改。常量可以在全局范围内访问,而且是没有作用域限制的。常量的命名规则与变量相同,但是通常使用全大写字母的命名规范。以下是一个简单的使用PHP const关键字的示例:
    ```php
    <?php
    // 定义常量
    const PI = 3.14;
    const SITE_NAME = "My Website";
    const DB_NAME = "mydb";

echo PI; // 输出3.14
echo SITE_NAME; // 输出"My Website"
echo DB_NAME; // 输出"mydb"
?>

以上代码中,我们使用了PHP const关键字来定义三个常量PI、SITE_NAME和DB_NAME。这些常量的值在定义后不能更改,并且可以在全局范围内访问。通过调用echo函数,可以输出这些常量的值。
## 2.3 静态变量
PHP静态变量是指在函数内部定义的变量,但该变量是函数静态的。即每次调用该函数时,该变量的值都会保留,并且可以在函数内部被多次使用。以下是一个使用PHP静态变量的示例代码:
```php
function countVisitors() {
    static $count = 0;
    $count++;
    echo "Number of visitors: " . $count;
}
countVisitors(); // 输出:Number of visitors: 1
countVisitors(); // 输出:Number of visitors: 2
countVisitors(); // 输出:Number of visitors: 3

在上述代码中,静态变量 $count` 在 `countVisitors()` 函数内部定义。每次调用 `countVisitors()` 时, `$count 都会自增并输出当前访问者的数量。
需要注意的是,静态变量只能在函数内部使用,并且仅在第一次调用函数时进行初始化。在以后的调用中,静态变量的值不会被重置。

2.4 超全局变量

PHP超全局变量是一些特殊的变量,它们在程序中的任何地方都可以被访问和使用,无需进行任何特殊的声明或定义。以下是PHP中可用的超全局变量以及它们的使用示例:

  1. $_SERVER 包含有关当前脚本执行的服务器和环境信息。
    echo $_SERVER['SERVER_ADDR']; //输出当前服务器的IP地址
    echo $_SERVER['HTTP_USER_AGENT']; //输出当前用户的浏览器信息
    
  2. $_GET 包含通过URL参数传递给当前脚本的所有值。
    if(isset($_GET['name'])){
         
         
     echo "Hello ".$_GET['name']; //输出URL参数中传递进来的名字
    }
    
  3. $_POST 包含通过表单提交到当前脚本的所有值。

    if(isset({
         
         mathJaxContainer[3]}_POST['password'])){
         
         
     {
         
         mathJaxContainer[4]}_POST['username'];
     {
         
         mathJaxContainer[5]}_POST['password'];
     //处理用户提交的表单数据
    }
    
  4. $_SESSION 包含会话变量,用于在不同页面之间传递数据。

    session_start();
    $_SESSION['username'] = 'John Smith'; //设置会话变量
    echo $_SESSION['username']; //输出会话变量
    
  5. $_COOKIE 包含通过浏览器存储的所有cookie值。

    if(isset($_COOKIE['username'])){
         
         
     echo "Welcome back ".$_COOKIE['username']; //输出cookie中存储的用户名
    }
    
  6. $_FILES 包含通过表单上传的所有文件信息。
    if(isset($_FILES['file'])){
         
         
     {
         
         mathJaxContainer[6]}_FILES['file']['name'];
     {
         
         mathJaxContainer[7]}_FILES['file']['type'];
     {
         
         mathJaxContainer[8]}_FILES['file']['size'];
     //处理上传的文件
    }
    
  7. $_ENV 包含当前脚本的环境变量。
    echo $_ENV['PATH']; //输出当前系统的PATH环境变量
    

    三、 条件语句

    if-elseif-else 是在 PHP 中用于多条件判断的语法结构,它可以根据不同条件执行不同的代码块。下面是一个简单的例子:
$score = 75;

if ($score >= 90) {
   
   
    echo "优秀";
} elseif ($score >= 80) {
   
   
    echo "良好";
} elseif ($score >= 60) {
   
   
    echo "及格";
} else {
   
   
    echo "不及格";
}

在上面的例子中,首先定义了一个变量 $score,然后通过 if-elseif-else 语句对它进行多条件判断。如果 $score 大于等于 90,输出“优秀”;如果 $score 大于等于 80,输出“良好”;如果 $score 大于等于 60,输出“及格”;否则输出“不及格”。这样就可以根据不同的分数输出不同的评价,实现了多条件判断。

四、 Switch语句

PHP中的switch语句用于根据不同的条件执行不同的代码块。下面是一个使用switch语句的例子:

$dayOfWeek = "Monday";

switch ($dayOfWeek) {
   
   
  case "Monday":
    echo "Today is Monday";
    break;
  case "Tuesday":
    echo "Today is Tuesday";
    break;
  case "Wednesday":
    echo "Today is Wednesday";
    break;
  case "Thursday":
    echo "Today is Thursday";
    break;
  case "Friday":
    echo "Today is Friday";
    break;
  default:
    echo "It's the weekend!";
}

这个例子中,我们定义了一个变量dayOfWeek,并在switch语句中根据它的值执行不同的代码块。当dayOfWeek的值为"Monday"时,输出"Today is Monday",当dayOfWeek的值为"Tuesday"时,输出"Today is Tuesday",以此类推。如果dayOfWeek的值不匹配任何一个case,就会执行default中的代码块,输出"It's the weekend!"。注意,在每个case的代码块末尾都要使用break来跳出整个switch语句,否则会继续执行后面的代码块,直到遇到break或switch语句结束。

五、循环语句

5.1 for循环

假设我们要打印从1到10的数字,可以使用php的for循环来实现。
代码如下:

<?php
for ({
   
   mathJaxContainer[11]}i <= 10; $i++) {
   
   
    echo $i . "<br>";
}
?>

上述代码中,for循环的语法结构为:

for (初始化表达式; 条件表达式; 递增/递减表达式) {
   
   
     循环体;
}

其中,初始化表达式为 $i = 1` ,即将循环变量 `$i 初始化为1,条件表达式为 $i <= 10` ,即当 `$i 的值小于等于10时继续循环,递增表达式为 $i++` ,即每次循环 `$i 的值加1。循环体中使用 echo 输出 $i 的值,并加上换行符 <br>

5.2 while循环

以下是一个使用PHP while循环的例子:

<?php 
$count = 1;
while ($count <= 10) {
   
   
   echo "Count is: " . $count . "<br/>";
   $count++;
}
?>

这个例子中,变量count的初始值为1。在while循环中,我们首先检查count是否小于或等于10。如果条件成立,则输出当前计数的值,并将count加1。当count增加到11时,条件不再成立,while循环停止执行。因此,上面的代码将输出数字1到10。

六、数组与对象

6.1 对象

对象:对象是一种封装了相关属性和方法的数据类型。对象可以存储不同类型的数据,如字符串、数字、布尔值等等,同时也可以包含自定义函数和方法。在PHP中,对象可以通过关键字“class”定义,通过“new”关键字实例化,并通过“->”操作符来访问属性和方法。

6.2数组

数组是一种集合数据类型,它用于存储一组数据,这些数据可以是任意类型的。在PHP中,数组可以使用不同的方式定义,例如使用array()函数、[]方括号、或者使用“range()”函数等。数组可以包含单个值、键值对、多维数组等,而且还提供了一系列可以对数组进行操作的函数。PHP的数组是一种非常灵活、强大的数据类型,以下是它们的使用介绍:

  1. 定义数组:可以使用array()函数、[]方括号、或者使用“range()”函数等方式来定义一个数组。例如:
    $arr1 = array(1, 2, 3); // 定义一个长度为3的数组
    $arr2 = [4, 5, 6]; // 定义另一个长度为3的数组
    $arr3 = range('a', 'e'); // 定义一个包含从 a 到 e 的元素的数组
    
  2. 访问数组元素:使用下标访问数组元素,下标从0开始。例如:
    echo $arr1[0]; // 输出 1
    echo $arr2[2]; // 输出 6
    echo $arr3[4]; // 输出 e
    
  3. 添加和删除数组元素:可以使用[]运算符或array_push()函数来向数组末尾添加元素。使用unset()函数删除指定下标的元素。例如:
    {
         
         mathJaxContainer[15]}arr1 数组末尾添加一个元素
    array_push({
         
         mathJaxContainer[16]}arr2 数组末尾添加一个元素
    unset({
         
         mathJaxContainer[17]}arr1 中下标为1的元素
    
  4. 遍历数组:可以使用for、foreach等循环语句遍历数组。例如:
    for ({
         
         mathJaxContainer[18]}i < count({
         
         mathJaxContainer[19]}i++) {
         
         
     echo {
         
         mathJaxContainer[20]}i];
    }
    foreach ({
         
         mathJaxContainer[21]}value) {
         
         
     echo $value;
    }
    
  5. 多维数组:PHP的数组还支持多维数组,其中每个元素也可以是一个数组。例如:
    $multiArr = array(
     array(1, 2, 3),
     array("a", "b", "c"),
     array(true, false),
    );
    echo $multiArr[0][1]; // 输出 2
    echo $multiArr[1][2]; // 输出 c
    echo $multiArr[2][1]; // 输出 false
    

    七、 运算符

    PHP的运算符是用于执行各种数学,逻辑和位运算操作的符号。
  1. 算术运算符:用于执行基本的数学运算,包括加法(+),减法(-),乘法(),除法(/),取模(%)和幂运算(*)。
  2. 比较运算符:用于比较两个值的大小和类型,包括相等(==),不相等(!=),全等(===),不全等(!==),大于(>),小于(<),大于或等于(>=)和小于或等于(<=)。
  3. 逻辑运算符:用于执行布尔逻辑运算,包括与(&&),或(||)和非(!)。
  4. 位运算符:用于对二进制数字进行操作,包括按位与(&),按位或(|),按位异或(^),左移(<<)和右移(>>)。
  5. 赋值运算符:用于将值赋给变量,包括等于(=),加等于(+=),减等于(-=),乘等于(*=),除等于(/=),模等于(%=),位与等于(&=),位或等于(|=),位异或等于(^=)和左移等于(<<=)右移等于(>>=)。
  6. 其他运算符:包括三元运算符(?:),执行引用运算符(&),错误控制运算符(@)和字符串连接运算符(.)。

    八、函数与命名空间

    8.1 函数

    PHP中函数的定义与使用如下:
  7. 定义函数:
    函数定义使用 function 关键字,后面跟着函数名和括号,括号内是函数参数列表,函数代码块写在花括号内。
    function functionName({
          
          mathJaxContainer[22]}param2, ..., $paramN) {
          
          
    // Function code block
    }
    
  8. 函数参数:
    函数可以包含零个或多个参数。函数参数在括号内列出,逗号分隔。当函数被调用时,传递给函数的参数值赋值给函数参数。
  9. 调用函数:
    要调用 PHP 函数,只需要使用函数名称,后面跟着括号包含的参数列表(如果有的话)。
    functionName({
          
          mathJaxContainer[23]}arg2, ..., $argN);
    
  10. 返回值:
    函数可以返回一个值,该值可以是任何类型的数据,包括数组和对象。函数返回值使用 return 语句指定。
    function functionName({
          
          mathJaxContainer[24]}param2) {
          
          
    {
          
          mathJaxContainer[25]}param1 + $param2;
    return $result;
    }
    
  11. 函数作用域:
    函数内部声明的变量是局部变量,它们只能在函数内部访问。函数外部声明的变量是全局变量,它们可以在函数内部和外部访问。
  12. 可变函数:
    PHP允许使用可变函数名称调用函数。这意味着函数名称可以在运行时动态更改。
    $functionName = 'functionName';
    {
          
          mathJaxContainer[26]}functionName({
          
          mathJaxContainer[27]}arg2);
    

    8.2 命名空间

    PHP 命名空间是一种机制,用于解决在编写类库或应用程序时创建函数和类名称冲突的问题。
    简单来说,命名空间就是为了避免不同代码库之间的命名冲突而引入的一种机制。在 PHP 中,使用关键字 namespace 来声明一个命名空间,使用 \ 符号来分隔不同级别的命名空间。
    例如:
    namespace MyNamespace;
    
    可以使用以下代码来引用命名空间中的类或函数:
    $myObject = new MyNamespace\MyClass();
    
    当然也可以通过 use 关键字将命名空间中的类或函数导入当前命名空间:
use MyNamespace\MyClass;

或者:

use MyNamespace\MyFunction;

命名空间还可以嵌套使用,例如:

namespace MyNamespace\SubNamespace;
class MyClass {
   
   };

在这个例子中,MyClass 类被定义在 MyNamespace\SubNamespace 命名空间下。
除此之外,PHP 还支持使用别名来给命名空间、类或函数取一个短的、易于记忆的名称。例如:

namespace MyNamespace;
use MyNamespace\SubNamespace\MyClass as SubClass;
$myObject = new SubClass();

这样,当需要使用 MyNamespace\SubNamespace\MyClass 时,只需要使用 SubClass 就可以了。

九、魔术常量和魔术方法

9.1 魔术常量

在PHP中,魔术变量是一种特殊的变量,它们用于提供关于脚本运行环境和脚本本身的信息。这些变量都是以两个下划线开头和结尾的,例如FILELINECLASS等。下面是一些常用的魔术变量:

  1. FILE:该变量的值为当前文件的完整路径和文件名。

  2. LINE:该变量的值为当前行号。在调试代码时非常有用。

  3. FUNCTION:该变量的值为当前函数的名称。

  4. CLASS:该变量的值为当前类的名称。

  5. METHOD:该变量的值为当前方法的名称。

  6. NAMESPACE:该变量的值为当前命名空间的名称。

  7. DIR:该变量的值为当前文件所在的目录。

使用这些魔术变量可以方便地获取一些关于脚本运行环境和代码本身的信息,从而方便我们进行调试和优化。注意,魔术变量不需要定义或声明,直接使用即可。

9.2 魔术方法

PHP中的魔术方法是一组特殊的函数,它们以双下划线(__)作为前缀,用于处理对象的操作。以下是几个常用的魔术方法:

  1. __construct(): 构造方法,在实例化对象时自动调用,用于初始化对象的成员属性。

  2. __destruct(): 析构方法,在对象被销毁时自动调用,用于清理对象的资源。

  3. __get(): 获取属性值时自动调用,可以用于动态获取私有属性的值。

  4. __set(): 设置属性值时自动调用,可以用于动态设置私有属性的值。

  5. __call(): 调用不存在的方法时自动调用,可以用于实现动态方法。

  6. __toString(): 把对象转换为字符串时自动调用,可以用于在输出对象时自定义格式。

  7. __clone(): 克隆对象时自动调用,可以用于实现对象的浅拷贝和深拷贝。

使用魔术方法可以使代码更加简洁、灵活,同时也可以增强代码的可读性和可维护性。但需要注意,魔术方法的使用必须遵循一定的规范和约定,否则可能会导致意想不到的结果。

总结

以上就是关于本篇文章介绍的内容PHP语言基础,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。

相关文章
|
12月前
|
监控 算法 安全
基于 PHP 语言深度优先搜索算法的局域网网络监控软件研究
在当下数字化时代,局域网作为企业与机构内部信息交互的核心载体,其稳定性与安全性备受关注。局域网网络监控软件随之兴起,成为保障网络正常运转的关键工具。此类软件的高效运行依托于多种数据结构与算法,本文将聚焦深度优先搜索(DFS)算法,探究其在局域网网络监控软件中的应用,并借助 PHP 语言代码示例予以详细阐释。
285 1
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
642 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
8月前
|
JSON JavaScript 前端开发
Python+JAVA+PHP语言,苏宁商品详情API
调用苏宁商品详情API,可通过HTTP/HTTPS发送请求并解析响应数据,支持多种编程语言,如JavaScript、Java、PHP、C#、Ruby等。核心步骤包括构造请求URL、发送GET/POST请求及解析JSON/XML响应。不同语言示例展示了如何获取商品名称与价格等信息,实际使用时请参考苏宁开放平台最新文档以确保兼容性。
|
12月前
|
存储 监控 算法
基于 PHP 语言的滑动窗口频率统计算法在公司局域网监控电脑日志分析中的应用研究
在当代企业网络架构中,公司局域网监控电脑系统需实时处理海量终端设备产生的连接日志。每台设备平均每分钟生成 3 至 5 条网络请求记录,这对监控系统的数据处理能力提出了极高要求。传统关系型数据库在应对这种高频写入场景时,性能往往难以令人满意。故而,引入特定的内存数据结构与优化算法成为必然选择。
315 3
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
490 20
|
缓存 监控 算法
内网监控管理软件:PHP 语言队列算法揭秘
在数字化办公环境中,内网监控管理软件对企业的稳定运行和信息安全至关重要。本文深入介绍PHP中的队列算法及其在内网监控软件中的应用,包括监控数据收集、任务调度和日志记录等场景,通过代码示例展示其实现方法。队列算法可提高性能、保证数据顺序并实现异步处理,为企业提供高效的安全保障。
224 1
|
前端开发 Java 程序员
2025年了,PHP 还是“世界上最好的语言”吗?
“PHP是全世界最好的语言”源自2001年PHP官方文档,本为积极评价,后因PHP性能、安全等问题成为技术圈知名梗。Ruby调侃自己是程序员最好的朋友,其他语言如Go、Java、Python则低调介绍优势。前端CSS预处理语言Sass高调自称最成熟强大,Less则低调表示仅比CSS多一点。2025年TIOBE指数显示,PHP已跌至13名,Python位居第一。尽管PHP难回巅峰,但其早期辉煌仍值得怀念。
899 3
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
470 0
|
JavaScript Java PHP
php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02
本文是第二天的PHP学习笔记,涵盖了PHP中运算符的使用、类型转换方式,以及打印输出语句的特点,展示了其相较于其他编程语言的一些特殊之处。
php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02
|
PHP 容器
03 PHP语言基础知识
路老师的PHP教程系列,带你深入学习PHP语言。从常量、变量、操作符到表达式和函数,全面覆盖基础知识,助你快速入门并掌握核心技术。每天坚持学习,轻松成为PHP高手!
232 2