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

PHP 碎片筆記:字符串分割 (split/preg_split/explode)、fetch 函數差異、單雙引號本質

     編輯:PHP 相關知識

PHP 碎片筆記:字符串分割 (split/preg_split/explode)、fetch 函數差異、單雙引號本質

整理學習過程中的三個易混淆知識點,作為快速查閱備忘。

一、字符串分割三把斧

函數分隔符類型正則風格二進制安全狀態
split()正則POSIX❌ 非安全PHP 5.3 棄用, 7.0 移除
preg_split()正則PCRE (Perl)✅ 安全推薦正則分割
explode()固定字符串無✅ 安全**最快、首選非正則場景**

代碼對比:分割 "2008-12-16 15:48:12"

<?php
$str = "2008-12-16 15:48:12";

// split (已棄用) - POSIX 字符類
// $arr = split('[- :]', $str); 

// preg_split - PCRE 字符類
$arr = preg_split("/[\s-:]/", $str);
// Array ( [0]=>2008 [1]=>12 [2]=>16 [3]=>15 [4]=>48 [5]=>12 )

// explode - 需多次調用或配合 str_replace
$arr = explode(' ', $str); // 先按空格
$date = explode('-', $arr[0]);
$time = explode(':', $arr[1]);
二進制安全:指函數僅按字節處理數據,不解釋特殊字符 (如 NULL \0)、不按編碼語義截斷。preg_split、explode 均為二進制安全;舊 split 非安全,遇 \0 會提前結束。

二、mysqli_fetch_row vs mysqli_fetch_array

<?php
$result = mysqli_query($link, "SELECT id, name FROM user");

// fetch_row → 純數字索引
while ($row = mysqli_fetch_row($result)) {
    echo $row[0] . ':' . $row[1]; // 1:Tom
}

// fetch_array → 默認雙份 (數字+關聯)
$row = mysqli_fetch_array($result);
// Array ( [0]=>1 [id]=>1 [1]=>Tom [name]=>Tom )

// 可選模式
mysqli_fetch_array($result, MYSQLI_ASSOC); // 只關聯
mysqli_fetch_array($result, MYSQLI_NUM);   // 只數字 (同 fetch_row)
mysqli_fetch_array($result, MYSQLI_BOTH);  // 默認雙份
  • fetch_row:性能最好、內存最小,適合大數據導出、統計。
  • fetch_array:功能最全,但默認雙份佔用雙倍內存,**生產代碼建議顯式指定 MYSQLI_ASSOC**。
  • 手冊稱兩者性能差異微小,fetch_array 是增強版。

三、單引號 vs 雙引號:本質區別

特性單引號 '...'雙引號 "..."
解析變量❌ 不解析,原樣輸出 $var✅ 解析變量 {$var}
轉義字符僅 \' \\完整支持 \n \t \r \" \\ \$ 等
執行速度略快 (無解析開銷)略慢
適用場景純文本、SQL 語句、不含變量的字符串需嵌入變量、換行符、複雜轉義
<?php
$name = 'Tom';
echo 'Hello $name';  // Hello $name
echo "Hello $name";  // Hello Tom
echo "Hello {$name}"; // Hello Tom (複雜表達式推薦加花括號)

// SQL 寫法推薦單引號,防止誤觸發變量解析
$sql = 'SELECT * FROM user WHERE name = "Tom"'; // 雙引號在 SQL 字符串中
核心概念區分:
  • 變量:數據的符號引用 (如 $name)
  • 字符串/文本:數據本身 (字面值)
  • 單引號字符串 = 純文本數據;雙引號字符串 = 可解析的模板

參考資料

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