PHP 技巧:5 个让你编码更高效的实用函数
在日常 PHP 开发中,掌握一些“小而美”的技巧能显著提升代码质量。下面分享 5 个我常用的函数与写法。
1. 数组解包:用 ... 替代 array_merge
PHP 5.6+ 支持变长参数和数组解包。合并多个数组时,... 比 array_merge 更直观:
$arr1 = ['a'=>1, 'b'=>2];
$arr2 = ['c'=>3];
$merged = [...$arr1, ...$arr2]; // ['a'=>1, 'b'=>2, 'c'=>3]
注意:字符串键会覆盖,数字键会重新索引。
2. 空合并赋值运算符 ??=
PHP 7.4 引入的 ??= 仅在变量为 null 时赋值:
$cache = $cache ?? loadCache(); // 旧写法
$cache ??= loadCache(); // 新写法
省去 isset 判断,代码更清爽。
3. 数组任意键取值:array_column
从二维数组中提取某一列的值:
$users = [['id'=>1, 'name'=>'Tom'], ['id'=>2, 'name'=>'Jerry']];
$names = array_column($users, 'name'); // ['Tom', 'Jerry']
还可指定第三参数作为索引键,非常灵活。
4. 快速生成随机字符串
用 random_bytes + bin2hex 生成安全的随机 token:
$token = bin2hex(random_bytes(16)); // 32位十六进制字符串
比 rand()/mt_rand() 更适合密码重置、CSRF 令牌等场景。
5. 内存友好的文件读取
处理大文件时,别用 file_get_contents 一次性加载。改用生成器:
function readLines($file) {
$handle = fopen($file, 'r');
while (!feof($handle)) {
yield fgets($handle);
}
fclose($handle);
}
foreach (readLines('huge.log') as $line) {
// 逐行处理,内存占用恒定
}
小结
以上技巧覆盖了数组操作、变量赋值、安全随机数、大文件处理等常见场景。善用它们,代码会更简洁、可靠。你还知道哪些 PHP 冷门但好用的函数?欢迎留言交流。