表單送來一個欄位,值剛好是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

PHP資料型態 在PHP程式語言中,資料型態是一個重要的概念,它定義了變數可以存儲的資料類型。PHP提供了多種資料型態,包括整數、浮點數、字串、布林值、陣列、物件、NULL和資源。 整數 整數是沒有小數的數字,可以是正數或負數。例如: <?php $a = 1234; // 正整數 $b = -123; // 負整數 $c = 0123; // 八進制數 (等於十進制的83) $d = 0x1A; // 十六進制數 (等於十進制的26) ?> 浮點數 浮點數是有小數點的數字,也可以是科學記數法。例如: <?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?> 字串 字串是字符的序列。在PHP中,可以使用單引號或雙引號來定義一個字串。例如: <?php $a = 'Hello world!'; $b = "Hello world!"; ?> 布林值 布林值是一種特殊的資料型態,只有兩個值:真(True)或假(False)。例如: <?php $a = true; $b = false; ?> 陣列 陣列是存儲多個值的一種資料結構。例如: <?php $cars = array("Volvo", "BMW", "Toyota"); ?> 物件 物件是存儲資料和對資料進行操作的一種資料結構。例如: <?php class Car { function Car()...
2023-12-25 1.46w 0
文尼先生 2023-12-25

PHP echo和print語句 在PHP中,我們經常需要將資訊輸出到瀏覽器上。這時候,我們就需要使用到PHP的輸出語句。在PHP中,主要有兩種輸出語句,分別是echo和print。雖然這兩種語句在功能上非常相似,但在使用上還是有一些細微的差別。 echo語句 echo是一種語言結構,用於輸出一個或多個字串。echo沒有返回值,且可以輸出一個或多個字串。例如: <?php echo "Hello, world!"; ?> 這段程式碼會在瀏覽器上輸出"Hello, world!"。 print語句 print也是一種語言結構,用於輸出一個字串。print有一個返回值1,且只能輸出一個字串。例如: <?php print "Hello, world!"; ?> 這段程式碼也會在瀏覽器上輸出"Hello, world!"。 echo和print的差異 echo和print在大多數情況下可以互換使用,但還是有一些細微的差異。 echo可以輸出一個或多個字串,print只能輸出一個字串。 echo沒有返回值,print的返回值為1。 echo的速度略快於print。 選擇echo還是print 在實際開發中,選擇使用echo還是print主要取決於個人喜好和具體需求。如果需要輸出多個字串,或者追求程式運行速度,可以選擇使用echo。如果需要知道輸出是否成功,可以選擇使用print。 結語 總的來說,echo和print都是PHP中非常重要的輸出語句,理解它們的使用方法和差異,對於學習PHP有著至關重要的作用。
2023-12-25 5.15k 0
文尼先生 2023-12-25

PHP 變數介紹 在PHP程式語言中,變數是一種存儲信息的容器。變數的名稱可以是字母、數字和下劃線,但必須以字母或下劃線開頭。在PHP中,所有變數名稱都是以美元符號($)開頭的。 PHP 變數的種類 PHP中的變數可以分為四種主要類型:標量類型、複合類型、特殊類型和資源類型。 標量類型:包括布爾型(boolean)、整型(integer)、浮點型(float)和字符串型(string)。 複合類型:包括數組(array)和對象(object)。 特殊類型:包括NULL和回調/閉包型(callable)。 資源類型:包括數據庫連接、文件操作等。 PHP 變數的聲明和使用 在PHP中,我們使用等號(=)來給變數賦值。例如,$var = "Hello, World!"; 就是將字符串 "Hello, World!" 賦值給變數 $var。我們也可以使用unset()函數來銷毀變數。 PHP 變數的作用範圍 在PHP中,變數的作用範圍可以是本地的(local)、全局的(global)或者超全局的(superglobal)。本地變數只在其被定義的函數內部可用,而全局變數則可以在腳本的任何地方使用。超全局變數是在所有的作用範圍內都可用的內置變數,例如$_GET、$_POST等。 PHP 變數的轉換 PHP是一種弱類型語言,這意味著在大多數情況下,我們不需要手動將變數從一種類型轉換為另一種類型。然而,如果需要,我們可以使用一些內置的函數來進行類型轉換,例如intval()、floatval()、strval()等。 結語 總的來說,理解和掌握PHP變數的使用是成為一名有效的PHP開發人員的關鍵步驟。希望這篇文章能對你有所幫助。
2023-12-25 1.54w 0
文尼先生 2023-12-25

PHP註釋的重要性 在程式設計中,註釋是一個重要元素,它可以幫助我們理解和解釋程式碼的功能。在PHP中,我們有多種方式可以添加註釋,這些註釋對於程式碼的維護和理解都有很大的幫助。 PHP註釋的種類 在PHP中,我們主要有三種類型的註釋: 單行註釋:以兩個斜線(//)或一個井號(#)開頭。 多行註釋:以斜線星號(/*)開頭,以星號斜線(*/)結尾。 文件註釋:以兩個星號斜線(/**)開頭,以星號斜線(*/)結尾,通常用於生成自動文檔。 如何使用PHP註釋 在PHP中使用註釋非常簡單,以下是一些範例: <?php // 這是一個單行註釋 # 這也是一個單行註釋 /* 這是一個多行註釋 可以跨越多行 */ /** * 這是一個文件註釋 * 通常用於生成自動文檔 */ ?> 註釋的重要性 註釋對於程式碼的維護和理解都有很大的幫助。它可以幫助我們記錄程式碼的功能和用途,也可以幫助其他開發者理解我們的程式碼。在複雜的項目中,註釋是必不可少的。
2023-12-25 4.59k 0
文尼先生 2023-12-25

PHP語法基礎 PHP(Hypertext Preprocessor)是一種開放源碼的通用電腦程式設計語言,特別適合於網路開發並可嵌入HTML中使用。以下將介紹PHP的基本語法。 PHP標籤 PHP的腳本可以放在文檔中的任何位置。PHP腳本以<?php開始,以?>結束: <?php // PHP code goes here ?> PHP語句 在PHP中,每個語句都必須以分號結束。分號是一種分隔符,用於區分PHP的多個語句。 PHP變數 在PHP中,變數以$符號開始,其後是變數的名稱。變數名稱必須以字母或下劃線開始。例如: <?php $txt = "Hello world!"; $x = 5; $y = 10.5; ?> PHP常量 在PHP中,常量是一種在腳本運行期間無法改變的名稱或標識符。常量的名稱以字母或下劃線開始,後面可以跟任何字母、數字或下劃線。例如: <?php define("GREETING", "Welcome to W3School.com.cn!"); echo GREETING; ?> PHP數據類型 PHP支持以下數據類型: String(字符串) Integer(整型) Float(浮點型) Boolean(布爾型) Array(數組) Object(對象) NULL(空值) PHP字符串 字符串是字符的序列,比如"Hello world!"。在PHP中,字符串可以用兩種方式定義:單引號和雙引號。 PHP整型 整型是沒有小數的數字。整型規則: 整數必須有至少一個數字(0-9) 整數不能包含逗號或空格 整數是沒有小數點的 整數可以是正數或負數 整數可以是十進制、十六進制或八進制 PHP浮點型 浮點數是有小數點或以科學記數法(e)表示的數字。 PHP布爾型 布爾型可以是TRUE或FALSE。 PHP數組 數組在一個變量中存儲多個值。 PHP對象 對象是存儲數據和有關如何處理數據的信息的數據類型。在PHP中,必須明確地聲明對象。 PHP NULL值 NULL是一種特殊的數據類型,可以只有一個值:NULL。一個NULL值表示變量沒有值。NULL值是區分大小寫的。 結論 以上就是PHP語法的基礎知識,包括PHP標籤、語句、變數、常量、數據類型等等。希望這篇文章能對您學習PHP有所幫助。
2023-12-25 1.67w 0
文尼先生 2023-12-25
顯示驗證碼
沒有帳號?註冊  忘記密碼?