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快速入门与实战中,感谢大家支持。

相关文章
|
20天前
|
Java Go PHP
开发语言漫谈-PHP
PHP即“Hypertext Preprocessor”
|
3月前
|
JSON JavaScript Java
【PHP】英文博客专栏PHP快速入门个人笔记
【PHP】英文博客专栏PHP快速入门个人笔记
120 1
|
4月前
|
安全 PHP 数据安全/隐私保护
PHP语言B/S医院不良事件报告系统源码
PDCA持续改进,提升医院管理品质 不良事件管理系统,辅助医院进行医疗质量持续改进,例如形成规范完善的不良事件上报机制,提升事件处理的反馈效率,以及通过人、机、料、法、环五个维度对事件因素进行分析,形成事件的整改闭环管理,也能针对某些重点不良事件进行改进,防止严重医疗安全事故再次出现,有效提升医院质量管理品质和医院竞争力。
53 1
|
10月前
|
程序员 PHP
PHP快速入门12-异常处理,自定义异常、抛出异常、断言异常等示例
PHP的异常处理机制可以帮助我们在程序运行时遇到错误或异常情况时,及时发出警告并停止程序继续运行。下面是10个例子,分别展示了PHP异常处理的不同用法。
|
10月前
|
XML JSON PHP
PHP快速入门08-JSON与XML处理
PHP快速入门与实战JSON与XML都是用于在不同的应用程序之间传输数据的格式化语言。在PHP中,可以使用内置函数处理JSON和XML格式的数据。以上就是关于本篇文章介绍的内容,JSON与XML处理,后续更多内容将收录在专栏PHP快速入门与实战。
|
5月前
|
开发框架 移动开发 程序员
【周末闲谈】“PHP是最好的语言”这个梗是怎么来的?
【周末闲谈】“PHP是最好的语言”这个梗是怎么来的?
56 0
|
5月前
|
存储 数据采集 监控
PHP语言、B/S手术麻醉临床信息管理系统源码
PHP语言、B/S手术麻醉临床信息管理系统源码
43 0
|
5月前
|
安全 PHP 数据安全/隐私保护
【PHP语言】医院安全(不良)事件报告系统源码
【PHP语言】医院安全(不良)事件报告系统源码
75 0
|
6月前
|
开发框架 JavaScript Java
推荐一个日历转换开源工具库,支持C#、Java、PHP等主流的语言
推荐一个日历转换开源工具库,支持C#、Java、PHP等主流的语言
47 0
|
7月前
|
开发框架 Java .NET
PHP语言
PHP语言
78 2