在日常PHP 開發中,有時我們需要快速初始化一個數組,其中的每一個鍵都對應一個布爾值false ,表示某些標記尚未被設置或某些條件未達成。此時, array_fill_keys函數就能派上用場。
array_fill_keys是PHP 的內置函數,用於根據給定的鍵數組,生成一個所有鍵都對應相同值的新數組。其函數簽名如下:
array_fill_keys(array $keys, mixed $value): array
$keys :你想要用作數組鍵的一個數組。
$value :所有鍵對應的初始值。
假設你正在處理一個表單字段驗證邏輯,有一組字段你想初始化為未通過驗證(即false)。這時可以使用如下代碼:
<?php
$fields = ['username', 'email', 'password', 'confirm_password'];
$validationStatus = array_fill_keys($fields, false);
print_r($validationStatus);
輸出:
Array
(
[username] =>
[email] =>
[password] =>
[confirm_password] =>
)
請注意, false在print_r中顯示為空,但它確實是布爾值false 。
你也可以用它來初始化一個權限控制數組,例如:
<?php
$permissions = ['read', 'write', 'delete', 'publish'];
$userPermissions = array_fill_keys($permissions, false);
// 後續可以根據用戶角色來賦權
if ($userRole === 'editor') {
$userPermissions['read'] = true;
$userPermissions['write'] = true;
}
var_dump($userPermissions);
如果你要生成一組帶有布爾狀態的鏈接鍵,比如網站的導航狀態,可以這麼做:
<?php
$routes = [
'https://m66.net/home',
'https://m66.net/about',
'https://m66.net/contact'
];
$navActive = array_fill_keys($routes, false);
// 假設當前頁面是 /about
$currentUrl = 'https://m66.net/about';
$navActive[$currentUrl] = true;
print_r($navActive);
輸出會是:
Array
(
[https://m66.net/home] =>
[https://m66.net/about] => 1
[https://m66.net/contact] =>
)
在模板渲染時,可以根據這個布爾值來決定是否給導航項添加active類。
array_fill_keys是一個簡潔高效的函數,適用於快速生成初始狀態數組。在處理布爾型標誌、權限控制、導航狀態等場景時非常方便。
下次需要初始化一個布爾數組時,不妨試試這個方法,讓你的代碼更簡潔、可讀性更高!