PHP 入门笔记:常量、字符串与运算符详解

· PHP笔记 小技巧 PHP 入门笔记 · 1 阅读 · 约 5 分钟

前言

这篇笔记整理 PHP 基础中的三块内容:常量、字符串和运算符,都是日常写代码频繁用到的知识点,适合刚入门的同学查漏补缺。

常量

定义常量

常量一旦定义就不能被修改或取消定义。PHP 提供两种定义方式:

// 方式一:define() 函数
define('APP_NAME', 'MyBlog');
echo APP_NAME;

// 方式二:const 关键字(PHP 5.3+)
const APP_VERSION = '1..';
echo APP_VERSION;

define 与 const 的区别

  • define() 可以在运行时条件判断里使用,const 必须写在文件顶层或类中
  • define() 的常量名可以用变量拼接,const 不行
  • 类内只能用 const 定义类常量
class Config
{
    const HOST = 'localhost';
}

echo Config::HOST;

判断常量是否存在

if (defined('APP_NAME')) {
    echo '常量已定义';
}

字符串

单引号与双引号

$name = 'Tom';

// 单引号:不解析变量,速度快
echo 'Hello, $name';   // 输出:Hello, $name

// 双引号:解析变量和转义字符
echo "Hello, $name";   // 输出:Hello, Tom

常用字符串函数

strlen('hello');                         // 长度:5
mb_strlen('你好');                       // 多字节长度:2
substr('abcdef', 1, 3);                  // 截取:bcd
str_replace('a', 'b', 'abc');            // 替换:bbc
trim('  abc  ');                         // 去除首尾空格
explode(',', 'a,b,c');                   // 拆分成数组
implode('-', ['a', 'b']);                // 数组拼接:a-b
strtoupper('abc');                       // 转大写:ABC
strpos('hello', 'l');                    // 查找位置:2(找不到返回 false)
sprintf('姓名:%s,年龄:%d', 'Tom', 18); // 格式化

字符串拼接

PHP 用点号 . 拼接字符串,这一点和很多语言不同:

$first = 'Hello';
$second = 'World';
echo $first . ' ' . $second; // Hello World

运算符

算术运算符

$a = 10;
$b = 3;

echo $a + $b;  // 13
echo $a - $b;  // 7
echo $a * $b;  // 30
echo $a / $b;  // 3.333...
echo $a % $b;  // 1(取模)
echo $a ** $b; // 100(PHP 5.6+ 幂运算)

赋值运算符

$a = 5;
$a += 3;   // 等价 $a = $a + 3
$a .= '!'; // 等价 $a = $a . '!',字符串拼接赋值

比较运算符

10 == '10';  // true,值相等即可(松散比较)
10 === '10'; // false,类型也要相同(严格比较)
10 != '9';   // true
10 !== '10'; // true,类型不同
10 <=> 5;    // 1(太空船运算符,PHP 7+)

实践建议:判断相等时尽量用 ===,避免 PHP 松散比较带来的隐式类型转换坑,比如 == 'abc' 在 PHP 7 中返回 true。

逻辑运算符

$a = true;
$b = false;

var_dump($a && $b);  // false
var_dump($a || $b);  // true
var_dump(!$a);       // false
var_dump($a and $b); // 与 && 相同,但优先级更低,慎用

三元运算符与合并运算符

$age = 18;

// 三元运算符
echo $age >= 18 ? '成年' : '未成年';

// null 合并运算符(PHP 7+),比 isset 三元写法简洁
$page = $_GET['page'] ?? 1;

小结

  • 常量用 define() 或 const 定义,类内只能用 const
  • 单引号不解析变量,双引号解析变量,拼接用 .
  • 比较时优先用 === 和 !== 避免类型转换的坑
  • PHP 7 的 ?? 运算符能让取默认值的代码更简洁

掌握这些基础后,就可以继续学习流程控制和数组操作了。