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

PHP 變量核心機制:引用、動態變量、數據類型與字符串詳解

     編輯:PHP 綜合知識

變量引用機制

<?php
$one = "test";
$two = &$one;  // 引用賦值:兩個變量指向同一 zval 容器

$two = "changed";
echo $one; // "changed" —— 原變量也被修改

// 取消引用
unset($two); // $one 保持不變,只是解除綁定

動態變量(變量的變量)

<?php
$one = "######";
$two = "one";
$three = "two";

echo $three;      // "two"
echo $$three;     // "one"  ($two 的值)
echo $$$three;    // "######" ($one 的值)

// 實用場景:從配置加載變量
$config = ['db_host' => 'localhost', 'db_port' => 3306];
foreach ($config as $key => $value) {
    $$key = $value; // 創建 $db_host, $db_port
}

PHP 八大數據類型系統

分類類型關鍵字說明
標量類型 (4種)整型int / integer64位系統範圍:±9.22×10¹⁸
布爾型bool / booleantrue/false
浮點型float / double / realIEEE 754 雙精度,約 15-17 位有效數字
字符串string二進制安全,無長度限制
復合類型 (2種)數組array有序映射,鍵可為 int/string
對象object類實例
特殊類型 (2種)資源resource外部資源句柄(DB連接、文件指針等)
空值null無值,未初始化/unset/null賦值

整數字面量語法

<?php
$dec = 10;      // 十進制
$oct = 045;     // 八進制 (0 開頭)
$hex = 0xFF;    // 十六進制 (0x 開頭)
$bin = 0b1010;  // 二進制 (0b 開頭, PHP 5.4+)

// 數字分隔符 (PHP 7.4+)
$big = 1_000_000_000; // 10億,增強可讀性

浮點數字面量

<?php
$float1 = 3.14;
$float2 = 3.14E+5;  // 科學計數法:3.14 × 10⁵ = 314000
$float3 = 3.14E-5;  // 3.14 × 10⁻⁵ = 0.0000314

// 特殊值
INF;    // 無窮大
NAN;    // 非數字
is_finite(), is_infinite(), is_nan()

布爾值轉換規則:以下皆為 false

<?php
$falseValues = [
    false,      // 布爾假
    0,          // 整數 0
    0.0,        // 浮點 0.0
    '',         // 空字符串
    '0',        // 字符串 "0" (注意!)
    [],         // 空數組
    null,       // 空值
    // 簡單XML 對象從空標簽創建
];

// 所有其他值均為 true,包括:
// - 資源類型
// - 對象 (即使屬性全為空)
// - 字符串 "false", " ", "0.0"
// - 數組 [0], [null]

字符串定義四種方式

語法解析變量解析轉義適用場景
單引號 '...'否僅 \' 和 \\純文本、性能敏感、不需解析
雙引號 "..."是完整支援 (\n \t \\ \" \$ 等)需內插變量/轉義字符
Heredoc <<<EOT是完整支援大段文本、SQL、HTML 模板
Nowdoc <<<'EOT'否無 (如單引號)大段純文本、包含變量名但不想解析

Heredoc/Nowdoc 語法規則

<?php
// Heredoc:標識符不加引號,結束標識符必須頂格獨佔一行,前後無空格
$str = <<

字符串最佳實踐

  1. 優先單引號:無解析開銷,性能微優,語義明確
  2. 複雜內插用雙引號:"User {$user->name} logged in at {$time}"
  3. 大段文本用 Heredoc:SQL、HTML、郵件模板,避免引號嵌套地獄
  4. Nowdoc 存儲代碼片段:正則、模板、包含 $ 符號的文本
  5. 字符串連接用 . 而非 ,:echo 'a' . 'b'; (echo 多參數用逗號)
  6. 避免循環中連接:用數組收集最後 implode()

深入理解變量機制,是寫出高性能、低 Bug PHP 代碼的基石!

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