字符串运算符 #
一、字符串运算符 #
PHP有两个字符串运算符:
| 运算符 | 名称 | 示例 | 说明 |
|---|---|---|---|
| . | 连接 | $a . $b | 连接两个字符串 |
| .= | 连接赋值 | $a .= $b | 连接后赋值给$a |
二、连接运算符(.) #
2.1 基本连接 #
php
<?php
$a = "Hello";
$b = "World";
$result = $a . " " . $b;
echo $result;
2.2 连接不同类型 #
php
<?php
$name = "John";
$age = 25;
$price = 99.99;
$active = true;
echo "Name: " . $name . "\n";
echo "Age: " . $age . "\n";
echo "Price: " . $price . "\n";
echo "Active: " . $active . "\n";
2.3 自动类型转换 #
php
<?php
echo "Number: " . 42;
echo "Float: " . 3.14;
echo "Boolean: " . true;
echo "Boolean: " . false;
echo "Array: " . [1, 2, 3];
echo "Null: " . null;
2.4 复杂表达式 #
php
<?php
$a = 10;
$b = 20;
echo "Sum: " . ($a + $b);
echo "Sum: " . $a + $b;
三、连接赋值运算符(.=) #
3.1 基本用法 #
php
<?php
$message = "Hello";
$message .= " ";
$message .= "World";
$message .= "!";
echo $message;
3.2 构建字符串 #
php
<?php
$html = "";
$html .= "<div>";
$html .= "<h1>Title</h1>";
$html .= "<p>Content</p>";
$html .= "</div>";
echo $html;
3.3 循环中构建 #
php
<?php
$items = ['apple', 'banana', 'cherry'];
$list = "<ul>";
foreach ($items as $item) {
$list .= "<li>$item</li>";
}
$list .= "</ul>";
echo $list;
3.4 日志构建 #
php
<?php
$log = "[" . date('Y-m-d H:i:s') . "]";
$log .= " [INFO]";
$log .= " User logged in";
$log .= "\n";
echo $log;
四、字符串插值 #
4.1 双引号插值 #
php
<?php
$name = "John";
$age = 25;
echo "Name: $name, Age: $age";
echo "Name: {$name}, Age: {$age}";
echo "Name: ${name}, Age: ${age}";
4.2 复杂表达式 #
php
<?php
$user = ['name' => 'John', 'age' => 25];
echo "Name: {$user['name']}";
echo "Age: {$user['age']}";
class Person {
public $name = "John";
}
$person = new Person();
echo "Name: {$person->name}";
4.3 方法调用 #
php
<?php
class User {
public function getName(): string {
return "John";
}
}
$user = new User();
echo "Name: {$user->getName()}";
echo "Name: " . $user->getName();
五、连接 vs 插值 #
5.1 性能比较 #
php
<?php
$name = "John";
$age = 25;
$result = $name . " is " . $age . " years old";
$result = "$name is $age years old";
$result = "{$name} is {$age} years old";
5.2 可读性 #
php
<?php
$firstName = "John";
$lastName = "Doe";
$fullName = $firstName . " " . $lastName;
$fullName = "$firstName $lastName";
5.3 复杂场景 #
php
<?php
$items = ['apple', 'banana'];
echo "Items: " . implode(", ", $items);
echo "Count: " . count($items);
六、Heredoc 与 Nowdoc #
6.1 Heredoc #
php
<?php
$name = "John";
$age = 25;
$text = <<<EOT
Name: $name
Age: $age
Status: Active
EOT;
echo $text;
6.2 Nowdoc #
php
<?php
$name = "John";
$text = <<<'EOT'
Name: $name
Variables are not parsed.
EOT;
echo $text;
6.3 实际应用 #
php
<?php
function generateEmail(string $name, string $content): string
{
return <<<HTML
<!DOCTYPE html>
<html>
<head>
<title>Email</title>
</head>
<body>
<h1>Hello, {$name}!</h1>
<p>{$content}</p>
</body>
</html>
HTML;
}
七、字符串函数 #
7.1 常用函数 #
php
<?php
$str = "Hello World";
echo strlen($str);
echo strtoupper($str);
echo strtolower($str);
echo ucfirst($str);
echo ucwords($str);
echo strrev($str);
echo str_replace("World", "PHP", $str);
echo substr($str, 0, 5);
echo strpos($str, "World");
7.2 格式化函数 #
php
<?php
$name = "John";
$age = 25;
printf("Name: %s, Age: %d\n", $name, $age);
$text = sprintf("Name: %s, Age: %d", $name, $age);
echo $text;
$price = 99.99;
printf("Price: %.2f\n", $price);
printf("Price: %01.2f\n", $price);
7.3 分割与连接 #
php
<?php
$str = "apple,banana,cherry";
$arr = explode(",", $str);
print_r($arr);
$arr = ['apple', 'banana', 'cherry'];
$str = implode(", ", $arr);
echo $str;
八、多行字符串 #
8.1 使用 Heredoc #
php
<?php
$sql = <<<SQL
SELECT u.id, u.name, u.email
FROM users u
WHERE u.status = 'active'
AND u.created_at > '2024-01-01'
ORDER BY u.name ASC
LIMIT 10
SQL;
echo $sql;
8.2 使用连接 #
php
<?php
$sql = "SELECT u.id, u.name, u.email ";
$sql .= "FROM users u ";
$sql .= "WHERE u.status = 'active' ";
$sql .= "ORDER BY u.name ASC ";
$sql .= "LIMIT 10";
echo $sql;
8.3 数组连接 #
php
<?php
$sql = implode(" ", [
"SELECT u.id, u.name, u.email",
"FROM users u",
"WHERE u.status = 'active'",
"ORDER BY u.name ASC",
"LIMIT 10"
]);
echo $sql;
九、最佳实践 #
9.1 选择合适的方式 #
php
<?php
$name = "John";
echo "Hello, $name!";
echo 'Hello, ' . $name . '!';
9.2 复杂表达式使用连接 #
php
<?php
$items = ['apple', 'banana'];
echo "Items: " . implode(", ", $items);
9.3 多行字符串使用 Heredoc #
php
<?php
$html = <<<HTML
<div class="container">
<h1>{$title}</h1>
<p>{$content}</p>
</div>
HTML;
9.4 SQL 查询 #
php
<?php
$sql = <<<SQL
SELECT * FROM users
WHERE status = :status
AND created_at > :date
SQL;
十、总结 #
本章学习了:
- 连接运算符(.)
- 连接赋值运算符(.=)
- 字符串插值
- Heredoc 和 Nowdoc
- 常用字符串函数
下一章将学习数组运算符。
最后更新:2026-03-26