使用array_fill_keys和array_walk分配数组键

时间:2019-06-19 10:30:58

标签: php arrays

我的问题是,我想组合两个数组,一个数组包含一个表的标题,另一个数组包含数据。我想创建一个以列名作为键的关联数组。不知何故,我得到了意外的结果(将键应用于错误的数组),无法弄清原因。

$header = array(array('Name','Position','Salary'));
$data  = array(
    array('John','Manager','30000'),
    array('Cindy','Associate','50000'),
    array('Paul','Staff','20000'),
    array('Mandy','Staff','100000')
    );
array_walk($data, function(&$value, &$key) use ($header) {$value = array_fill_keys($header[0],$value);});
var_dump($data);

以下是在线版本的链接: http://sandbox.onlinephpfunctions.com/code/5ad09dbf2c0af5d87f17c64118b9c68a7374a666

我要实现的是,$ data中的每一行都有$ header [0]作为键。

问候 基督徒

2 个答案:

答案 0 :(得分:1)

使用array_combine

array_walk($data, function(&$value, &$key) use ($header) {$value = array_combine($header[0],$value);});

Working example

答案 1 :(得分:1)

您可以使用array_shift与array_combine一起将索引向上加1,

$header = array_shift($header); // to index 1 up    
array_walk($data, function(&$value, &$key) use ($header) {
    $value = array_combine($header,$value);
});
print_r($data);

Demo

您将array_fill_keys用于错误的目的,
这是其使用的demo