用 array_column 建立商品名稱索引時,重複代碼會覆蓋前一筆,缺少代碼還可能產生數字鍵。用三個案例決定要拒收、保留或分組。
2026-11-11 0 0
2026-11-11

array_slice 切出文章後,原本的整數 ID 鍵名卻變成 0?用第四個參數保留鍵名,並分清位置偏移、字串鍵名與普通列表。
2026-11-05 0 0
2026-11-05

把兩批文章標題放進陣列,用$left + $right合起來,結果右邊第一筆不見了。PHP陣列的加號是按鍵名做聯集,不是把所有值接到後面。兩邊有相同鍵名時,左邊的值會留下,右邊對應的值會被忽略。 兩個列表都從0開始,第一個鍵就撞上了 以下每段都是獨立PHP範例,可各自存成.php檔執行。註解列出預期輸出,資料只是示例字串。 <?php $left = ['header', 'footer']; $right = ['sidebar']; echo json_encode($left + $right), PHP_EOL; // ["header","footer"] echo json_encode(array_merge($left, $right)), PHP_EOL; // ["header","footer","sidebar"] left的鍵是0、1;right的鍵也是0。因此,sidebar與header搶的是同一個鍵,加號保留左邊的header,並不是按文字內容去除重複。若只是要把兩批列表依序接起來,array_merge會保留三個值,並把整數鍵從0重新編號。 字串鍵相同時,兩種寫法的優先順序相反 <?php $left = ['color' => 'blue', 'rows' => 12]; $right = ['color' => 'red', 'cache' => true]; echo json_encode($left + $right), PHP_EOL; // {"color":"blue","rows":12,"cache":true} echo json_encode(array_merge($left, $right)), PHP_EOL; // {"color":"red","rows":12,"cache":true} 加號保留左邊color的blue;array_merge則由後面的red覆蓋前面的值。右邊獨有的cache,在兩種結果裡都會出現。合併網站設定時,先決定同鍵衝突要由誰優先,再選寫法;交換左右位置也會改變結果。 這個例子只處理一層鍵值。巢狀設定裡若還有陣列,不能直接把它當成逐層遞迴合併。 數字是文章ID時,不要順手重編鍵名 <?php $left = [101 => 'Article A']; $right = [202 => 'Article B']; echo json_encode($left + $right), PHP_EOL; //...
2026-10-24 55 0
文尼先生 2026-10-24

能登入 SSH 的站長,處理 PHP2Shell 時先做三件事:找出網站真正使用的 PHP、在正確位置套用臨時緩解、更新 PHP 並重啟對應工作程序。下面以 Ubuntu 24.04、APT 安裝的 PHP 8.3-FPM 為完整操作例子,另說明寶塔及 Docker 的分流;路徑與服務名稱要跟自己的環境核對,不能整篇不看就貼上。 PHP 官方已在 2026 年 10 月 21 日修補 CVE-2026-109618 與 CVE-2026-109619。上游修補版是 8.2.35、8.3.36、8.4.27、8.5.12。發行版可能回移修補,請比對完整套件版本;例如 Ubuntu 24.04 的公告修補版為 8.3.6-0ubuntu0.24.04.13。 登入 SSH 後,先看 PHP 是誰安裝的 先執行以下唯讀命令。它們用來找線索,尚未改動設定或更新套件: cat /etc/os-release command -v php php -v php --ini ps -eo pid,ppid,args | grep '[p]hp-fpm' systemctl list-units --type=service --all | grep -E 'php.*fpm|apache2|httpd' php -v 和 php --ini 顯示的是命令列 PHP,未必是網站的 PHP。還要對照網站的 Nginx/Apache 虛擬主機設定、FastCGI socket,以及對應 FPM master 的啟動路徑。寶塔可能使用自己的 PHP 目錄;容器內的 PHP 也不會隨宿主機的 APT...
2026-10-21 71 0
文尼先生 2026-10-21

PHP 官方於 2026 年 10 月 21 日發布緊急安全更新,修補俗稱 PHP2Shell 的兩個高危漏洞。使用 WordPress 的站長,現在要向主機商確認的是:網站實際使用的 PHP 是否已套用修補,以及更新後的工作程序是否已重新啟動。只在 WordPress 後台按下核心、主題或插件更新,無法完成這次 PHP 執行環境的修補。 PHP2Shell 影響哪些網站? 這次涉及 CVE-2026-109618 與 CVE-2026-109619,官方預告列出的 CVSS v4.0 評分均為 9.2。問題出在 PHP 核心處理請求與記憶體的方式,可能讓未登入的遠端攻擊者執行程式碼。 PHP 官方把所有提供網頁請求的 PHP 安裝列為風險範圍,包括 PHP-FPM、Apache 的 mod_php、php-cgi、FrankenPHP 與 LiteSpeed。當中 mod_php 的風險被列為最高,已有在應用程式碼執行前觸發攻擊的示範。因此,網站有登入頁、關閉會員註冊,或沒有讓訪客上傳檔案,都不能直接當成安全判定。 兩份上游公告分別描述記憶體耗盡時的狀態損壞,以及前一次請求留下的全域狀態引用了已釋放的記憶體。這也解釋了為何處理範圍會超出單一 WordPress 插件:維護者需要檢查主機上的 PHP 本身。 先對照分支,再確認修補來源 PHP 官方已發布下列修補版本;若採用上游版本,請更新至所屬分支的這個版本或更新版本。 PHP 8.2:8.2.35。 PHP 8.3:8.3.36。 PHP 8.4:8.4.27。 PHP 8.5:8.5.12。 由 Linux 發行版或長期支援供應商維護的套件,可能採用回移補丁:保留原本的基礎版本號,把安全修正加進套件。例如 Ubuntu 官方列出,24.04 的修補套件為 8.3.6-0ubuntu0.24.04.13,22.04 則為 8.1.2-1ubuntu2.28。不能因為畫面仍顯示 8.3.6,就斷定它一定沒有修補;也不能只聽到「有自動更新」就認定完成。請核對完整套件版本和供應商公告。 PHP 8.1 及更舊版本已不再獲得 PHP 專案的正常更新。官方這次提供了 7.4、8.0、8.1 的最小原始碼回移修補,供特定維護情境使用,並不代表這些分支恢復支援。若主機商無法提供相應修補,應安排遷移至仍受支援的 PHP 版本,先確認網站、主題與插件的相容性。 WordPress 站長可以怎樣向主機商確認? 先登入自己的 WordPress...
2026-10-21 61 0
文尼先生 2026-10-21

第一輪foreach改完價格,資料明明是11、21、31;接著只是再走訪一次,最後一項卻變成21。若前一輪寫了&$price,先查迴圈結束後有沒有unset($price)。引用不會隨著右大括號自動解除,後面再用同一個變數,就可能改到陣列尾項。 第二輪看似只讀,為何改了尾項 把下面程式存成PHP檔執行。第一輪透過引用替每個值加1,第二輪沒有寫任何更新陣列的程式,卻仍會改變結果。 <?php $prices = [10, 20, 30]; foreach ($prices as &$price) { $price += 1; } echo json_encode($prices), PHP_EOL; // [11,21,31] foreach ($prices as $price) { // 這裡沒有主動修改陣列 } echo json_encode($prices), PHP_EOL; // [11,21,21] 第一輪結束時,$price仍連著$prices最後一項。第二輪雖然沒有&,每次把元素值指派給$price,仍會透過殘留引用寫進尾項;輪到最後一項時,它已被前面的21覆蓋。問題不是json_encode,也不是陣列排序。 引用用完,立即解除連結 在引用迴圈結束後加上unset($price),再開始下一輪。用完整程式重新執行,避免前一次實驗留下的引用干擾結果。 <?php $prices = [10, 20, 30]; foreach ($prices as &$price) { $price += 1; } unset($price); foreach ($prices as $price) { // 後續一般走訪 } echo json_encode($prices), PHP_EOL; // [11,21,31] 這裡unset的是引用變數$price,解除它與陣列元素的連結,不是刪除$prices的最後一項。不要誤寫成unset($prices[2]),那會移除元素。第一輪已完成的加1結果,也不會因為解除引用而還原。 不需要引用,就明確按key回寫 若只是更新每一項,可以改用key指定位置,把引用的生命週期問題拿掉。 <?php $prices = [10, 20, 30]; foreach ($prices as...
2026-10-20 54 0
文尼先生 2026-10-20

PHP搜尋陣列時,明明第一項就是要找的商品代碼,程式卻顯示「找不到」?先看你是不是把array_search()的結果直接放進if。它回傳的是鍵,不是單純的成功或失敗:找到第一項時,鍵可能是整數0;沒找到才回傳布林值false。 先把回傳值印出來 用一個普通的商品代碼清單就能重現。將下面存成獨立PHP檔執行,先觀察var_dump顯示的型別。 <?php $codes = ['starter', 'pro', 'team']; $key = array_search('starter', $codes, true); var_dump($key); // int(0) if ($key) { echo "找到\n"; } else { echo "找不到\n"; // 這個判斷寫錯了 } 這裡搜尋已成功,問題出在後面的條件。整數0在布林判斷中會被當成false,所以不能用if ($key)辨認搜尋是否成功。也不要改成if (!$key)或$key == false,它們同樣會把0混進失敗分支。 只把布林false當成沒找到 需要拿回鍵來讀取或處理那一項時,明確比較回傳值是否為布林false。下面是可替換前例的完整版本。 <?php $codes = ['starter', 'pro', 'team']; $key = array_search('starter', $codes, true); if ($key !== false) { echo '找到鍵:' . $key . "\n"; echo '商品代碼:' . $codes[$key] . "\n"; } else { echo "找不到\n"; } 這次會輸出鍵0及商品代碼starter。找不到時則走else。如果要用unset($codes[$key])移除匹配項,也應放在這個成功分支裡;不要在確認結果前就把false拿去當陣列鍵,否則可能誤操作鍵0。 第三個參數true,解決的是型別匹配 array_search的第三個參數和後面的!== false各有用途。前者要求搜尋值與陣列項目型別一致,後者分清「找到鍵0」和「沒有找到」。加了第三個參數,仍不能省略結果判斷。 <?php $ids = ['12', 12];...
2026-10-14 68 0
文尼先生 2026-10-14

商品庫存明明是0,PHP整理欄位後卻不見了?先找程式裡有沒有直接呼叫array_filter($values)。省略判斷函式時,它會移除PHP視為空的值,整數0與字串'0'都在其中。若0代表缺貨、免費或未使用次數,這樣清資料就可能把有意義的值一起刪掉。 要修正這個問題,先說清楚哪些值應該移除。下面用虛構資料示範:只去掉空字串與null,保留兩種零;若結果要作為JSON列表交給前端,再把數字索引排回連續順序。 先重現:不用callback,兩種零都被移除 把以下程式存成filter-demo.php,在已安裝PHP的練習環境執行php filter-demo.php。這段程式只處理記憶體裡的陣列,不會寫入商品資料庫。 <?php $values = [0, '0', '', null, 12]; $filtered = array_filter($values); var_export($filtered); echo PHP_EOL; echo json_encode($filtered), PHP_EOL; 結果只剩索引4的12,JSON會是{"4":12}。這裡有兩個不同原因:預設篩選把零值移除,而array_filter()保留原本的鍵。不是JSON把0刪掉,也不是前端憑空把陣列改成物件。 只刪空字串與null:用嚴格比較保留0 如果你的需求確實是「只刪空字串與null」,把篩選條件寫出來。這裡要用!==,避免把不同型別先轉換後再比較。 <?php $values = [0, '0', '', null, 12]; $filtered = array_filter($values, static function ($value) { return $value !== '' && $value !== null; }); var_export($filtered); echo PHP_EOL; echo json_encode($filtered), PHP_EOL; 現在索引0、1、4分別保留整數0、字串'0'與12。JSON結果是{"0":0,"1":"0","4":12}:零回來了,但鍵還沒有重排,因此仍是JSON物件。 這個條件也會保留false、空陣列與只含空白的字串。它們是否有效,要依欄位規格決定;例如庫存欄位還需要另外驗證數字與允許範圍。不要把「保留0」誤當成整份輸入已驗證合格。 前端要JSON列表,再用array_values重排 當介面約定回傳列表,例如[0,"0",12],可在篩選後呼叫array_values()。它回傳值組成的新陣列,數字索引從0重新連續排列。 <?php $values = [0, '0', '', null, 12]; $filtered = array_filter($values, static function ($value) { return $value !== '' && $value...
2026-10-08 97 0
文尼先生 2026-10-08

在寶塔把網站切到新的PHP版本,終端執行php -v卻仍顯示舊版本,不一定是切換失敗。網站請求與命令列可以使用不同PHP入口;先分開核對兩者,才不會為了一個命令輸出,改動原本正常的網站環境。 以下依寶塔和PHP官方文件說明檢查順序。文中的命令與短程式是供你核對現場的示例,沒有預設你的安裝路徑、版本或輸出。先記錄網站與命令列各自的入口,再決定是否需要調整。 寶塔站點切換的是該網站的PHP環境 寶塔官方PHP頁說明,可以修改當前站點指定的PHP運行版本,適合已安裝多個版本的環境,也支援自訂PHP連線配置與純靜態站點。它描述的是選定網站的服務設定,不是所有終端命令都一起切換的承諾。 先確認你選中的是需要修改的站點,而不是同一台伺服器上的另一個域名。記下原版本與目標版本,並查程式的版本要求;不要只因新版本可選,就讓舊程式直接承擔相容性變更。 如果網站設為純靜態,就不應把靜態HTML成功打開當成PHP已執行。核對網站真正使用的入口與請求類型,確認你測的是PHP程式,而不是由Web伺服器直接提供的檔案。 php -v回答的是這次命令呼叫的程式 PHP官方命令列文件將CLI與其他SAPI分開,並說明可用php -v查看呼叫的PHP資訊。這個結果對命令列有用,但它沒有替瀏覽器請求讀取寶塔目標站點的設定。 php -v php --ini 這兩個命令分別核對目前呼叫的PHP及配置資訊。不要把示例命令下面想像出的版本當成結果;保存你自己的完整輸出和執行時間,並確認當時使用哪個終端、帳號與工作環境。 若有多個PHP可執行檔,應依現場安裝資料找出正確路徑,再用明確路徑核對。不要直接複製別人的寶塔版本目錄,也不要先修改全域連結,讓同一台機器上的其他命令或任務一起受影響。 比較Web與CLI時,先看版本和SAPI PHP提供PHP_VERSION與php_sapi_name()等資訊,讓你辨認目前程式由哪個環境執行。需要比較兩個入口時,可以在受控、短暫的診斷方式中記錄版本與SAPI;不要把完整環境報告長期放在公開網站。 <?php echo PHP_VERSION, "\n"; echo php_sapi_name(), "\n"; CLI與網站入口得到不同SAPI是合理現象,不能只因字串不同就認定故障。重點是它們的版本、配置與擴充功能,是否各自符合負責的工作。短程式也只讀當次執行環境,不替所有站點提供統一結論。 若你必須透過網站診斷,限制存取範圍,核對完成立即移除。完整phpinfo會展示大量配置及環境資訊,官方文件描述其輸出範圍;排查單一版本差異時,不需要把整份內容公開給所有訪客。 版本相同,也可能讀取不同配置 PHP官方配置文件說明,配置檔的查找位置與執行方式等條件有關,並可能有SAPI專用設定。這解釋了為什麼兩邊版本相同,記憶體限制、擴充功能或其他行為仍可能不同。 核對各自真正載入的配置檔及額外掃描資訊,而不是只找到磁碟上某個php.ini,就認定網站與CLI都在用它。配置檔存在,和這次執行載入它,是兩項不同事實。 如果只在CLI出現缺少擴充功能的錯誤,先查CLI配置;如果只在網站出現,則查站點PHP服務。不要把一邊的錯誤當成另一邊也需要相同修改,或者將所有版本的配置互相覆蓋。 網站能開,不代表命令列任務也相容 網站之外,部署命令、排程與背景工作可能另外呼叫PHP。它們使用的入口應獨立記錄。網站切換版本後,如果某個任務出錯,先核對那個任務實際執行的程式,不要立即把網站切回去。 同樣,手動終端命令成功也不代表排程必定使用相同環境。任務可能記錄明確路徑,也可能依它自己的環境尋找命令。檢查任務設定和執行紀錄,才知道它與剛才的手動測試是否可比較。 若需要統一版本,先列出網站、部署及任務各自的入口,確認相容要求,再安排範圍明確的變更。不要把全域PHP切換當成方便的捷徑,卻沒有盤點其他網站與既有任務。 錯誤訊息要和入口一起保存 看到缺少函式、擴充功能或版本不符時,保存完整錯誤、執行方式及相關PHP資訊。只貼一句「PHP不對」會讓維護者不知道問題來自瀏覽器、CLI還是排程,容易在錯誤的位置調整設定。 也把成功的對照結果記下來。例如網站請求成功而CLI失敗,代表你已有兩個不同入口可比較;先查它們的差異,比同時重裝所有PHP版本更能縮小問題範圍。 若診斷涉及密碼、環境變數或路徑,交接時只提供必要資訊,敏感內容另按既有方式保護。版本和配置核對不需要公開整份網站設定,更不需要把連線密碼放進文章留言或錯誤截圖。 一次只改能說清楚影響的入口 假如問題只出現在某個部署命令,就先讓那個命令使用符合程式要求的PHP入口,並核對結果。這不等於一定要修改整台主機的預設命令,也不等於所有網站都必須立即換版本。把處理範圍寫清楚,才能安排合理的回復方式。 需要修改配置時,同樣保存原值和實際載入位置,再依服務與設定的要求處理生效方式。不要因為編輯了某個檔案,就直接宣稱網站已讀取新值;以對應入口重新核對,並保存當時觀察,才知道變更是否到達需要的環境。 完成後保留一份入口清單 把目標網站PHP版本、CLI可執行檔路徑、各自載入的配置,以及重要任務的PHP入口放在同一份維護紀錄。之後再切換版本,就能逐項核對,不會只看一張面板截圖推斷所有工作都已更新。 最後用真正需要的網站請求與任務功能驗收,而不是只看版本號。版本符合只是執行條件之一;程式依賴、配置與實際功能也需要核對,才知道這次調整是否完成了原本要解決的問題。 參考資料寶塔官方:站點PHP設定PHP:命令列使用PHP:配置檔PHP:php_sapi_namePHP:phpinfo輸出範圍
2026-10-05 69 0
文尼先生 2026-10-05

PHP讀取JSON後得到null,不一定表示解碼失敗。JSON本身可以是一個合法的null;但格式錯誤時,預設的json_decode()也可能回傳null。若程式只寫「結果為null就報錯」,便會把有效資料當成錯誤。需要可靠區分時,可以用JSON_THROW_ON_ERROR,把解碼失敗交給JsonException處理。 這個問題容易出現在匯入檔案、第三方API回應及儲存JSON設定的功能裡。畫面只顯示「資料是空的」,站長卻不知道是服務正常回傳空值,還是資料傳到一半壞掉。先把語法解析與資料格式檢查拆開,錯誤訊息才會說到真正的問題。 合法null和壞掉的字串長得不一樣 JSON的null不需要引號,也沒有大括號。字串'null'交給json_decode後會成為PHP的null。相反,'{"name":}'缺少值,屬於無效JSON。預設解碼這兩者,都可能得到相同的null結果,只看回傳值無法分辨。 空字串也不是JSON的null。API回應沒有內容、HTTP請求失敗、檔案讀取失敗和伺服器回傳HTML錯誤頁,各自有不同原因;不能把它們先改成'null'再繼續處理。應先確認讀取或請求成功,再把真正拿到的字串交給解析器。 JSON也不只允許物件或陣列。像false、0和一段有雙引號包住的字串,都可以是合法值。因此「解碼沒有拋例外」只證明語法能解析,還不能證明資料符合某個API要求的物件結構。 用四組輸入看清差別 以下程式只使用合成字串,可儲存為case.php後在命令列執行。JSON_THROW_ON_ERROR自PHP7.3提供;本文的輸出來自PHP8.4.2。先用普通模式記錄錯誤,再用例外模式解析同一份資料。 <?php $cases = [ 'valid-null' => 'null', 'valid-object' => '{"name":"demo"}', 'broken' => '{"name":}', 'empty' => '', ]; foreach ($cases as $label => $raw) { $plain = json_decode($raw, true); $error = json_last_error(); printf("%s plain=%s error=%d\n", $label, var_export($plain, true), $error); try { $value = json_decode($raw, true, 512, JSON_THROW_ON_ERROR); echo "throw-mode: ", var_export($value, true), PHP_EOL; } catch (JsonException $e) { echo "throw-mode: JsonException code=", $e->getCode(), PHP_EOL; } } 合法null在普通模式的錯誤碼為0,例外模式仍然回傳null,沒有進入catch。合法物件會得到包含name的陣列。壞掉的字串與空字串在這組測試裡都得到語法錯誤碼4,例外模式則拋出JsonException。寫應用程式時應用JSON_ERROR_NONE等常數判斷,不要把這些數字硬寫成你的業務規則。 這樣你就能把「資料確實是null」與「資料無法解碼」放到不同分支。若對方的API規格允許null代表沒有設定,便可以在成功解析後處理這種狀態;若規格要求物件,則回報資料結構不符,而不是誤報語法壞掉。 把解析放在一個小的try區塊 try { $data =...
2026-10-04 63 0
文尼先生 2026-10-04

表單送來一個欄位,值剛好是null;後端卻回報「沒有這個欄位」。遇到這種情況,先看程式是不是用了isset()。它同時要求變數存在、值不是null,不能單靠結果判斷陣列裡有沒有這個鍵。要區分「沒傳」與「明確傳null」,應先用array_key_exists()判斷鍵,再處理值。 這個差別常出現在設定更新、資料匯入及API部分更新。例如使用者要清除副標題,系統把null當成清空指令;若後端把null視為未提供,就會保留舊副標題。本文用普通PHP陣列拆開這兩種情況,讓判斷對應到你真正要處理的動作。 先把「有鍵」與「有值」分開看 假設收到的資料是['subtitle' => null]。subtitle這個鍵確實在陣列裡,但它沒有非null的值。array_key_exists('subtitle', $input)會得到true,isset($input['subtitle'])則得到false。兩個結果都符合PHP的規則,只是它們回答不同的問題。 如果資料是空陣列,兩種檢查都得到false。也就是說,只看isset的false,無法知道欄位缺席,還是欄位存在但值為null。這不是資料自動被刪掉,也不是PHP沒有讀到請求;是你的檢查方式把兩種狀態合在一起。 還要留意空字串、數字0及布林false。這些值都不是null,所以isset會得到true。把isset當成「有填內容」也容易出錯:空字串可以通過isset,卻未必符合你的表單規則。鍵是否存在、值是否可接受,應分成兩個判斷。 用五組資料確認結果 建立一個獨立的case.php,貼上以下程式。它只檢查記憶體裡的陣列,不連接資料庫,也不會修改網站設定。執行前確認你使用的PHP命令指向要測試的版本。 <?php $cases = [ 'missing' => [], 'null' => ['subtitle' => null], 'empty' => ['subtitle' => ''], 'zero' => ['subtitle' => 0], 'false' => ['subtitle' => false], ]; foreach ($cases as $name => $input) { printf("%s: exists=%s isset=%s\n", $name, array_key_exists('subtitle', $input) ? 'true' : 'false', isset($input['subtitle']) ? 'true' : 'false'); } 在PHP8.4.2執行php case.php,輸出如下。最值得留意的是第二行:鍵存在,但isset仍然為false。後三行則說明不能把空字串、0、false和null混成同一種狀態。 missing: exists=false isset=false null: exists=true isset=false empty: exists=true isset=true zero: exists=true isset=true false: exists=true isset=true 如果你的結果不同,先看測試資料是否真的保留null。有些表單流程會把空白欄位轉成null,也有資料處理層會先移除值為null的鍵。檢查的位置很重要:應在你要判斷的那個資料結構上測,而不是只看更早收到的原始字串。...
2026-10-04 59 0
文尼先生 2026-10-04

PHP 字串處理 在PHP中,字串是一串字符的集合,可以是任何長度,並由單引號或雙引號包裝。 創建字串 在PHP中,我們可以使用單引號或雙引號來創建字串,例如: $single_quoted = '這是一個單引號字串'; $double_quoted = "這是一個雙引號字串"; 字串操作 PHP提供了許多內建函數來操作字串,下面是一些常用的函數: strlen(): 返回字串的長度 str_word_count(): 返回字串中的單詞數量 str_replace(): 在字串中替換一些字符 strtoupper()和strtolower(): 將字串轉換為大寫或小寫 字串連接 在PHP中,我們可以使用.運算符來連接兩個字串,例如: $first = "Hello, "; $second = "World!"; $greeting = $first . $second; // "Hello, World!" 字串比較 我們可以使用strcmp()函數來比較兩個字串,例如: $first = "apple"; $second = "banana"; $result = strcmp($first, $second); // -1 如果兩個字串相同,strcmp()將返回0。如果第一個字串小於第二個字串,它將返回-1。如果第一個字串大於第二個字串,它將返回1。 結論 總的來說,PHP提供了許多強大的工具來處理字串。無論是創建字串,操作字串,還是比較字串,PHP都可以輕鬆完成。
2023-12-25 1.66w 0
文尼先生 2023-12-25
顯示驗證碼
沒有帳號?註冊  忘記密碼?