在PHP 的標準庫函數中, array_fill()是一個小巧但非常實用的工具。面試中常常考察候選人是否熟悉這種看似簡單卻暗藏巧思的函數。理解並掌握array_fill()的使用,不僅能在實際開發中提升效率,也能在面試中展示出你對數組處理的熟練程度。
array_fill()用於用指定的值填充一個數組。其函數原型如下:
array array_fill ( int $start_index , int $count , mixed $value )
$start_index :起始索引
$count :元素個數
$value :用於填充的值
示例:
$array = array_fill(0, 5, 'PHP');
print_r($array);
輸出:
Array
(
[0] => PHP
[1] => PHP
[2] => PHP
[3] => PHP
[4] => PHP
)
這個函數在你需要快速創建一個有默認值的數組時非常方便。
比如你要初始化一組狀態為false的布爾值數組:
$status = array_fill(0, 10, false);
適用於諸如:用戶投票狀態、權限檢查標識、題目答題狀態等初始化任務。
有時候我們處理外部數據,某些字段值缺失,但我們希望保持統一的數據格式。這時可以使用array_fill()進行佔位。
$placeholders = array_fill(0, 3, 'N/A');
在導出CSV 或構建統一的數據表格時,這種寫法非常常見。
假設一個問卷有5 道題,每題默認值是0 分,可以這麼寫:
$scores = array_fill(1, 5, 0); // 從題號 1 開始
array_fill()與其他數組函數結合可以實現更複雜的邏輯。
與array_combine()聯合:
如果你有一組字段名,想給每個字段賦一個默認值:
$fields = ['name', 'email', 'phone'];
$defaults = array_fill(0, count($fields), '');
$data = array_combine($fields, $defaults);
輸出:
Array
(
[name] =>
[email] =>
[phone] =>
)
這是處理表單默認值、接口字段格式化的絕佳方式。
array_fill()允許負數索引,這在某些特定邏輯中很有用,但需要小心處理。
$negArray = array_fill(-3, 3, 'X');
輸出:
Array
(
[-3] => X
[-2] => X
[-1] => X
)
在面試中,面試官可能會這樣出題:
使用array_fill()快速生成一個索引從1 到100,初始值都為0 的數組,要求最終數組的key 是連續的整數。
答法:
$data = array_fill(1, 100, 0);
進階要求可能是:將所有key 映射為字符串格式,比如'item_1'到'item_100' 。
$keys = array_map(fn($n) => "item_$n", range(1, 100));
$values = array_fill(0, 100, 0);
$result = array_combine($keys, $values);
假設我們要構建一個POST 接口,向https://api.m66.net/data提交一個包含10 個用戶默認信息的數組,每個用戶數據格式為:
[
'name' => '',
'email' => '',
'status' => 'inactive'
]
我們可以這樣寫:
$defaultUser = [
'name' => '',
'email' => '',
'status' => 'inactive'
];
$users = array_fill(0, 10, $defaultUser);
$payload = json_encode(['users' => $users]);
$ch = curl_init('https://api.m66.net/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
$response = curl_exec($ch);
curl_close($ch);
這段代碼展示了array_fill()如何在真實業務場景中簡化構建結構化數據的過程。
掌握array_fill()的使用,可以讓你的代碼更加簡潔、表達更直觀。它雖不復雜,但卻經常藏著“面試官的考點”。下次遇到類似初始化、默認值填充的需求時,別忘了它的存在。優雅地使用array_fill() ,不僅是代碼層面的加分項,也可能成為你在面試中脫穎而出的細節亮點。