首页 > 编程语言 >「PHP系列」PHP 常量/字符串、类型比较

「PHP系列」PHP 常量/字符串、类型比较

时间:2024-03-31 14:32:44浏览次数:26  
标签:常量 定义 类型 字符串 PHP string1

文章目录

一、PHP 常量

在 PHP 中,常量是固定值,一旦被定义,就不能被修改或重新定义。常量通常用于存储那些不应该改变的值,比如配置选项、数学常数等。

1. 定义常量

在 PHP 中,你可以使用 define() 函数或 const 关键字来定义常量。

使用 define() 函数

define("CONSTANT_NAME", "value");

使用 const 关键字(在类内部)

class MyClass {
    const CONSTANT_NAME = "value";
}

2. 访问常量

你可以通过常量名来访问常量,不需要使用 $ 符号。

echo CONSTANT_NAME; // 输出 "value"

在类内部定义的常量可以通过类名来访问:

echo MyClass::CONSTANT_NAME; // 输出 "value"

3. 常量的特点

  1. 不可修改:一旦常量被定义,就不能再修改它的值。
  2. 全局访问:常量可以在任何地方访问,不需要任何特殊的访问修饰符。
  3. 大小写敏感:常量名是大小写敏感的。

4.注意事项

  • 常量名通常是大写的,这是一种编程约定,但不是强制的。
  • 使用 const 关键字定义的常量必须在类定义的顶层。
  • define() 函数定义的常量在整个脚本中都可用,而 const 定义的常量只在定义它的类内部可用。

5. 示例

下面是一个简单的示例,展示了如何在 PHP 中定义和使用常量:

<?php
// 使用 define() 函数定义常量
define("PI", 3.14159);

// 输出常量的值
echo "The value of PI is: " . PI;

// 在类内部使用 const 定义常量
class Circle {
    const RADIUS = 5;
    
    public function getArea() {
        return pi() * pow(self::RADIUS, 2);
    }
}

// 创建 Circle 类的实例并调用 getArea() 方法
$circle = new Circle();
echo "The area of the circle is: " . $circle->getArea();
?>

二、PHP 字符串

在 PHP 中,字符串是一系列字符的集合,用于存储文本数据。字符串可以用单引号、双引号或 heredoc/nowdoc 语法来定义。以下是一些关于 PHP 字符串的基本概念和操作:

1. 定义字符串

使用单引号

$string1 = '这是一个单引号字符串';

使用单引号定义的字符串不会解析变量或特殊字符(除了 \\\')。

使用双引号

$name = 'John';
$string2 = "这是一个双引号字符串,包含变量 $name";

使用双引号定义的字符串会解析变量和某些特殊字符(如 \n 代表换行符)。

使用 heredoc 和 nowdoc

$string3 = <<<EOD
这是一个 heredoc 字符串。
它可以在多行内定义,
直到遇到 EOD 标识符为止。
EOD;

$string4 = <<<'EOD'
这是一个 nowdoc 字符串。
它类似于 heredoc,但不会解析变量。
EOD;

heredoc 和 nowdoc 都用于定义多行字符串。heredoc 会解析变量,而 nowdoc 不会。

2. 字符串操作

字符串连接

$string5 = $string1 . $string2; // 使用点号连接两个字符串

字符串长度

$length = strlen($string1); // 获取字符串长度

字符串替换

$newString = str_replace('old', 'new', $string1); // 替换字符串中的子串

字符串查找

$position = strpos($string1, '子串'); // 查找子串在字符串中的位置

字符串截取

$substring = substr($string1, 0, 5); // 从字符串开始处截取 5 个字符

字符串分割

$array = explode(' ', $string1); // 使用空格分割字符串为数组

去除空格

$trimmedString = trim($string1); // 去除字符串两端的空格

大小写转换

$lowerString = strtolower($string1); // 转换为小写
$upperString = strtoupper($string1); // 转换为大写

3. 字符串格式化

使用 sprintf() 函数可以按照指定的格式来格式化字符串:

$formattedString = sprintf("Hello, %s! You have %d new messages.", $name, $count);

注意事项

  • 当使用双引号定义字符串时,如果需要在字符串内部包含双引号,则需要对其进行转义,如 \"
  • 字符串是不可变的,这意味着当你修改一个字符串时(如连接或替换),PHP 会创建一个新的字符串。
  • 字符串可以用作数组键,但不能用作数组索引。

三、PHP 类型比较

在 PHP 中,类型比较可以涉及到严格类型比较和宽松类型比较。这取决于你使用的比较运算符。PHP 是一种弱类型语言,这意味着在大多数情况下,它会自动转换变量的类型以匹配比较操作。然而,PHP 7 引入了严格类型声明,允许你在函数和方法的参数或返回值上指定类型。

以下是 PHP 中常用的比较运算符和它们的行为:

  1. 等于 (==):
    这个运算符执行宽松的比较。它会尝试将操作数转换为相同的类型,然后进行比较。如果两个操作数相等,则返回 true
 $a = "5";
 $b = 5;
 if ($a == $b) {
     echo "a 等于 b"; // 输出: a 等于 b
 }
  1. 全等 (===):
    这个运算符执行严格比较。它不仅比较两个操作数的值,还比较它们的类型。只有当两个操作数的值和类型都相等时,才返回 true
$a = "5";
$b = 5;
if ($a === $b) {
    echo "a 全等于 b"; // 不会输出
} else {
    echo "a 不全等于 b"; // 输出: a 不全等于 b
}
  1. 不等于 (!=):
    这个运算符执行宽松的不等于比较。它会尝试将操作数转换为相同的类型,然后检查它们是否不相等。
  2. 不全等 (!==):
    这个运算符执行严格的不等于比较。它比较两个操作数的值和类型,如果它们不相等或类型不同,则返回 true
  3. 大于 (>)、小于 (<)、大于等于 (>=)、小于等于 (<=):
    这些运算符都执行数值比较。如果操作数不是数值,它们会尝试将操作数转换为数值。对于非数值字符串,这些运算符的行为可能是不可预测的。

在 PHP 7 及更高版本中,你还可以使用类型声明来执行更严格的类型检查。例如:

function add(int $a, int $b): int {
    return $a + $b;
}

$sum = add(5, 3); // 正确
// $sum = add('5', 3); // 会抛出 TypeError 异常

在这个例子中,add 函数期望两个整数参数,并返回一个整数。如果你尝试传递非整数类型的参数,PHP 会抛出一个 TypeError 异常。

四、相关链接

  1. php官网
  2. php_Github
  3. PHP实现Token
  4. 「PHP系列」PHP简介与起步
  5. 「PHP系列」PHP语法介绍
  6. 「PHP系列」PHP变量
  7. 「PHP系列」PHP echo/print语句、数据类型详解

标签:常量,定义,类型,字符串,PHP,string1
From: https://blog.csdn.net/xuaner8786/article/details/137145218

相关文章

  • 代码随想录算法训练营第9天 | 字符串(待补充)
    28.实现strStr()KMP算法KMP算法:字符串匹配问题,提前构建next表next表(前缀表):利用成功匹配的经验,长度为t的前后缀相匹配,next[j]=tnext表再改进:利用失败匹配的经验,如果P[j]和P[t]相等,仍然是徒劳?......
  • 织梦地方php分类信息源码带数据库【附下载】
    织梦地方(DedeCMS)是一款基于PHP+MySQL技术的开源内容管理系统(CMS)。它以其强大的功能、灵活的扩展性和友好的用户界面,成为了众多网站建设者的首选。在功能方面,织梦地方CMS提供了丰富的模板标签和灵活的栏目管理,使得用户可以轻松实现各类信息的发布、管理和展示。无论是新闻资讯......
  • PHP 跳转搜索(Jump Search)
            与二分搜索一样,跳转搜索是一种针对排序数组的搜索算法。基本思想是通过按固定步骤向前跳跃或跳过某些元素来代替搜索所有元素来检查更少的元素(比线性搜索)。例如,假设我们有一个大小为n的数组arr[]和一个大小为m的块(要跳转)。然后我们在索引arr[0]、arr[m]......
  • 代码随想录算法训练营第8天 | 字符串
    344反转字符串voidreverseString(vector<char>&s){chartmp; inti=0,j=s.size()-1; while(i<j) { tmp=s[i]; s[i]=s[j]; s[j]=tmp; i++;j--; }}swap库函数的实现:位运算法——按位异或s[i]^=s[j];s[j]^=s[i];s[i]^=s[j];54......
  • 【测试开发学习历程】Python数据类型:字符串-str(下)
    目录5.5format()方法5.6count()方法5.7join()方法5.8replace()方法5.9split()方法5.10rstrip()/lstrip()/strip()方法5.11capitalize()方法5.12upper()5.13lower()5.14title()5.15endswith()方法5.16startswith()方法5.17以is开头的方法5转义字符......
  • PHP操作CSV/EXCEL的composer包phpoffice/phpspreadsheet
        之前用过PHP读取excel、csv文件的一些库,比如PHPExcel,今天找了一个PHPOffice/PhpSpreadsheet,网上有说现在PHPExcel已经不再维护了,最新的一次提交还是在2017年12月25号,看了一下,phpexcel也还在维护中,不过更新频率不如PhpSpreadsheet。    PhpSpreadsheet需要php环境......
  • 嵌入式中内存分配-栈区、堆区、全局区、常量区和代码区详解
    一、C语言内存分区C语言内存分区示意图如下:1.栈区栈区介绍栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。栈区按内存地址由高到低方向生长,其最大大小由编译时确定,速度快,但自......
  • 实验报告( 重载,引用,指针,交换,字符串的连接 )
       一、实验目的:掌握函数重载的使用方法深入理解指针的概念,掌握指针的使用方法理解引用的概念,掌握引用作为函数参数的使用方法二、实验仪器或设备:微型计算机三、总体设计(设计原理、设计方案及流程等)实验内容:1、设计一组重载函数add(),至少包括:charadd(char,int);......
  • day01-字符串方法-逻辑运算符规律
    字符串方法 查询类方法 字符串.index(字符):查询指定字符在整个字符串中第一次出现的位置下标;如果下表不存在则报错字符串.find(字符):查询指定字符在整个字符串中第一次出现的位置下标;如果下表不存在则返回-1字符串.rindex(字符):查询指定字符在整个字符串中最后一次出现的......
  • thinkphp+Laravel+vue实验室预约课程管理系统t1g73
     Laravel非常的简洁并且是开源的,Laravel是一个具有表现力、优雅语法的Web应用程序框架.Laravel是构建现代全栈Web应用程序的最佳选择.它的语法更富有表现力,拥有高质量的文档和丰富的扩展包,技术上它有Bundle扩展包、EloquentORM、反向路由、迁移、Restful控制器、自......