PHP - 常量數組:初學者指南

你好,未來的 PHP 巫師們!今天,我們將踏上一段令人興奮的旅程,探索 PHP 中的常量數組世界。別擔心你對編程是新手——我將成為你的友好導遊,我們將一步步前進。在這個教學的結尾,你將對你所學到的東西感到驚奇!

PHP - Constant Arrays

什麼是常量數組?

在我們深入之前,讓我們從基礎開始。在 PHP 中,常量是一個在腚本執行過程中不會變化的值。這就像你對你的代碼做出的承諾——"我莊嚴宣誓這個值將保持不變!"

現在,想像一下我們能對一群值做出同樣的承諾。這正是常量數組所做的!它們讓我們能夠創建一個(一組值的集合)在整個腢本中保持不變的數組。

PHP 中常量數組的演變

這裡有一點歷史課題。在 PHP 的早期版本(PHP 5.6 之前),創建常量數組有點棘手。但隨著 PHP 的發展,這變得更加簡單和直觀。讓我們看看在不同 PHP 版本中如何創建常量數組。

PHP 5.6 和更早版本

在這些版本中,我們必須使用一種變通方法來創建常量數組。這是它的樣子:

define('FRUITS', serialize(array('apple', 'banana', 'orange')));

$fruits = unserialize(FRUITS);
print_r($fruits);

如果你運行這段代碼,你將看到:

Array
(
[0] => apple
[1] => banana
[2] => orange
)

這裡發生了什麼?我們使用 define() 函數來創建一個常量,但我們首先序列化我們的數組。然後,當我們想要使用它時,我們必須反序列化它。這就像在旅行前將你的衣服打包進行李箱(序列化),然後在抵達時解包(反序列化)。

PHP 5.6 及以後

PHP 5.6 為開發者帶來了一個微笑,通過引入了一種更簡單的方法來定義常量數組:

define('ANIMALS', ['dog', 'cat', 'bird']);

print_r(ANIMALS);

這將輸出:

Array
(
[0] => dog
[1] => cat
[2] => bird
)

乾淨多了,不是嗎?再也無需打包和解包行李箱!

PHP 7 及以後:現代時代

現在,讓我們快速前進到 PHP 7 和之後的版本。這是常量數組真正開始閃耀的地方。PHP 7 引入了 const 關鍵字來定義常量數組,使我們的生活更加輕鬆。

const COLORS = ['red', 'green', 'blue'];

print_r(COLORS);

輸出:

Array
(
[0] => red
[1] => green
[2] => blue
)

這簡直是美麗得簡潔!就像 PHP 在說,"這是你的常量數組。不麻煩,不混亂!"

實際範例:將常量數組投入工作

現在我們了解了常量數組是什麼以及如何創建它們,讓我們看看一些它在現實世界場景中的實際應用。

範例 1:一周的天數

想像你正在建造一個排程應用。你可能想要有一個一周天數的常量數組:

const DAYS_OF_WEEK = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];

echo "一周的第一天是 " . DAYS_OF_WEEK[0] . "。\n";
echo "週末的日子是 " . DAYS_OF_WEEK[5] . " 和 " . DAYS_OF_WEEK[6] . "。\n";

這將輸出:

一周的第一天是 Monday。
週末的日子是 Saturday 和 Sunday。

通過使用常量數組,我們確保了一周的天數總是按正確的順序,並且在代碼的其他地方不會被意外更改。

範例 2:配置設置

常量數組非常適合用於存儲配置設置。讓我們說我們正在建造一個小型電子商務網站:

const SHOP_CONFIG = [
'name' => 'PHP Gadgets',
'currency' => 'USD',
'tax_rate' => 0.08,
'free_shipping_threshold' => 50
];

echo "歡迎來到 " . SHOP_CONFIG['name'] . "!\n";
echo "訂單超過 $" . SHOP_CONFIG['free_shipping_threshold'] . " 可享免費運送。\n";

輸出:

歡迎來到 PHP Gadgets!
訂單超過 $50 可享免費運送。

使用常量數組,我們將所有的配置放在一個地方,使其容易管理和更新。

高級使用:嵌套常量數組

當你對常量數組越來越熟悉時,你可能會發現自己想創建更複雜的結構。好消息!PHP 允許嵌套常量數組。讓我們看一個範例:

const MENU = [
'appetizers' => ['salad', 'soup', 'bruschetta'],
'main_courses' => ['steak', 'salmon', 'vegetarian_pasta'],
'desserts' => ['ice_cream', 'chocolate_cake', 'fruit_tart']
];

echo "今天的湯是 " . MENU['appetizers'][1] . "。\n";
echo "對於素食者,我們推薦 " . MENU['main_courses'][2] . "。\n";

輸出:

今天的湯是 soup。
對於素食者,我們推薦 vegetarian_pasta。

這種嵌套結構讓我們能夠以更邏輯和易於訪問的方式組織數據。

最佳實踐和建議

在我們結束之前,讓我們總結一些使用常量數組的最佳實踐和建議:

  1. 對常量名使用大寫。這是一個習慣,使常量在代碼中容易辨識。
  2. 為你的常量選擇有意義的名稱。'DAYS_OF_WEEK' 比起 'DOW' 更清晰。
  3. 對真正不應該變化的數據使用常量數組。如果你可能稍後需要修改數組,考慮使用普通變量。
  4. 記住,即使數組本身是常量,如果它包含對象,這些對象的屬性仍然可以被更改。

結論

恭喜你!你剛剛踏入了 PHP 中常量數組世界的第一步。我們從 PHP 5.6 到 PHP 7 及之後的版本,涵蓋了它們的演變,探索了實際應用的範例,甚至涉獵了更高级的使用。

記住,當你需要存儲不應變化的數據集合時,常量數組是你的朋友。它們使你的代碼更加可預測和易於維護。

隨著你繼續你的 PHP 旅程,你將發現常量數組有更多的用途。它們就像是你在不斷變化的代碼河流中的穩定岩石——可靠、不變,並且在你需要時總是在那裡。

持續練習,持續編程,最重要的是,繼續在 PHP 中找到樂趣!

方法 語法 PHP 版本
序列化 define('ARRAY_NAME', serialize(array('value1', 'value2'))); PHP 5.6 及更早版本
定義函數 define('ARRAY_NAME', ['value1', 'value2']); PHP 5.6 及以後
Const 鍵字 const ARRAY_NAME = ['value1', 'value2']; PHP 7 及以後

Credits: Image by storyset