在日常 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 是一个简洁高效的函数,适用于快速生成初始状态数组。在处理布尔型标志、权限控制、导航状态等场景时非常方便。
下次需要初始化一个布尔数组时,不妨试试这个方法,让你的代码更简洁、可读性更高!