李涛自留地
回到顶部
首页 > php学习 > PHP array_combine() 函数详解:用两个数组构造键值对

PHP array_combine() 函数详解:用两个数组构造键值对

文章目录

昨天处理数据库查询结果时,需要从字段名和字段值两个数组构造关联数组。本来用 foreach 循环拼,后来发现 array_combine() 一行就能搞定,而且代码可读性更好。

基本用法

array_combine(array_keys, array_values) - 用一个数组的值作为键名,另一个数组的值作为值,构造新数组。

`<?php
$fields = ['name', 'email', 'age'];
$values = ['张三', 'zhangsan@example.com', '25'];

$result = array_combine($fields, $values);

print_r($result);
/
Array
(
[name] => 张三
[email] => zhangsan@example.com
[age] => 25
)
/
?>
`

注意事项

两个数组长度必须相等,否则返回 false。键名数组不能有重复值,否则后面的值会覆盖前面的。

实战场景

场景1:数据库查询结果处理

<?php
$fields = ['user_id', 'username', 'email', 'created_at'];
$row = [1, 'zhangsan', 'zhangsan@example.com', '2024-01-01'];

$user = array_combine($fields, $row);
print_r($user);
/*
Array
(
    [user_id] => 1
    [username] => zhangsan
    [email] => zhangsan@example.com
    [created_at] => 2024-01-01
)
*/
?>

场景2:配置文件解析

<?php
$config_str = 'host=localhost;port=3306;dbname=mydb;user=root;pass=123456';
$parts = explode(';', $config_str);
$keys = []; $vals = [];
foreach ($parts as $part) {
    list($k, $v) = explode('=', $part, 2);
    $keys[] = $k;
    $vals[] = $v;
}
$config = array_combine($keys, $vals);
print_r($config);
?>

场景3:CSV 数据解析

<?php
$csv = 'name,email,phone';
$lines = array('name,email,phone', '张三,zhangsan@example.com,13800138000');
$headers = str_getcsv(array_shift($lines));
$records = [];
foreach ($lines as $line) {
    $values = str_getcsv($line);
    $records[] = array_combine($headers, $values);
}
print_r($records);
?>

若非作者标注皆为李涛自留地原创文章,转载或复制请以超链接形式并注明出处。