首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 字符串連接操作詳解

     編輯:PHP 相關知識

PHP 中字符串連接是基礎且高頻操作。本文介紹兩種核心連接方式:點運算符(.)與雙引號變量解析,並說明性能差異與最佳實踐。

方式一:點運算符連接

<?php
$str1 = "Hello World!";
$str2 = "Welcome to PHP!";

// 基礎連接
$str3 = $str1 . " " . $str2;
echo $str3; // Hello World! Welcome to PHP!

// 連接賦值運算符
$msg = "User: ";
$msg .= $username;
$msg .= " logged in.";
?>
  • 單引號/雙引號字符串均可連接
  • .= 追加模式,避免重複分配內存

方式二:雙引號變量解析(插值)

<?php
$author = "PHP開發者";

// 直接嵌入變量
$str = "Welcome to {$author}'s Blog!";
echo $str; // Welcome to PHP開發者's Blog!

// 複雜表達式需用花括號
$arr = ['name' => 'PHP'];
echo "Name: {$arr['name']}"; // Name: PHP
echo "Name: ${arr['name']}"; // 同效果

// 對象屬性
$obj = new stdClass();
$obj->version = '8.2';
echo "PHP {$obj->version}"; // PHP 8.2
?>
  • 僅雙引號支持變量解析,單引號按字面量輸出
  • 花括號 {} 清楚界定變量邊界,避免歧義
  • 不支持函數調用/方法調用直接嵌入

性能對比

<?php
$str = 'test';
$iterations = 1000000;

// 1. 點運算符
$start = microtime(true);
for ($i = 0; $i < $iterations; $i++) {
    $result = 'prefix_' . $str . '_suffix';
}
echo "點運算符: " . (microtime(true) - $start) . "s\n";

// 2. 雙引號插值
$start = microtime(true);
for ($i = 0; $i < $iterations; $i++) {
    $result = "prefix_{$str}_suffix";
}
echo "雙引號插值: " . (microtime(true) - $start) . "s\n";

// 3. sprintf
$start = microtime(true);
for ($i = 0; $i < $iterations; $i++) {
    $result = sprintf('prefix_%s_suffix', $str);
}
echo "sprintf: " . (microtime(true) - $start) . "s\n";
/*
點運算符: 0.18s
雙引號插值: 0.16s (略快)
sprintf: 0.42s (最慢,但格式化功能強)
*/
?>

雙引號插值通常略快於點運算符,但差異微小。sprintf 適合複雜格式化場景。

最佳實踐建議

  1. 簡單連接:優先使用雙引號插值,可讀性最佳
  2. 循環大量拼接:使用數組收集後 implode(),避免重複內存分配
    $parts = [];
    foreach ($items as $item) {
        $parts[] = process($item);
    }
    $result = implode('', $parts);
  3. SQL/Shell 命令:禁用字符串拼接,必須使用預處理/參數化
  4. 模板輸出:採用模板引擎或 Heredoc/Nowdoc 語法

Heredoc/Nowdoc 多行字符串

<?php
// Heredoc:支持變量解析(雙引號行為)
$html = <<<HTML
<div class="container">
    <h1>{$title}</h1>
    <p>{$content}</p>
</div>
HTML;

// Nowdoc:不解析變量(單引號行為),PHP 5.3+
$code = <<<'CODE'
function test() {
    echo $variable; // 不會被解析
}
CODE;
?>

掌握字符串連接細節,能寫出更高效、可維護的 PHP 代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved