PHP array_combine() 函数详解:用两个数组构造键值对
- 2026年7月3日
- 115 次
昨天处理数据库查询结果时,需要从字段名和字段值两个数组构造关联数组。本来用 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);
?>
<?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
)
*/
?>
<?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);
?>
<?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);
?>
若非作者标注皆为李涛自留地原创文章,转载或复制请以超链接形式并注明出处。
- jQuery实现指定日期页面变灰代码 网站页面实现页面变灰效果 2022-12-02
- PHP concat() 函数详解:字符串拼接的 N 种方法 2026-06-30
- PHP自定义回调函数简单实例 对PHP自定义回调函数的运用理解 2022-10-04
- PHP对象类型如何检测?PHP如何检测对象属于那个类? 2022-12-12
- PHP如何统计数组中元素个数 PHP如何统计多维数组元素 2022-10-23
- jQuery回到顶部实例代码 jQuery怎么实现回到顶部 2022-10-03
