如何重新分配数组键以转换为关联数组?

时间:2011-09-20 15:04:01

标签: php arrays

我有一个看起来像这样的数组:

array(
    0 => 'John',
    1 => 'Smith',
    3 => '123-456-7890'
    4 => 'john.smith@company.com'
)

我想以编程方式更改密钥,以便数组成为关联数组:

array(
    'first' => 'John',
    'last'  => 'Smith',
    'phone' => '123-456-7890'
    'email' => 'john.smith@company.com'
)

这样做最干净/最简洁的方法是什么?

3 个答案:

答案 0 :(得分:5)

array_combine()函数可能就是你要找的东西:

$keys = array('first', 'last', 'phone', 'email');

$new_arr = array_combine($keys, $arr);

答案 1 :(得分:4)

array_combine可能是这里的最佳方法。如果您有一个有序列表,您可以使用以下方法再次将其与原始密钥合并:

$array = array_combine(array("first", "last", "phone", "email"), $list);

答案 2 :(得分:0)

假设数组键是常量,那么0总是名字,1是姓氏等......

$new_keys = array(0 => 'first', 1 => 'last', 3 => 'phone', 4 => 'email');

foreach($new_keys as $oldkey => $newkey) {
   $orig_array[$newkey] = $orig_array[$oldkey];
   unset($orig_aray[$oldkey]);
}

如果映射不是常量,那么每次都必须动态构建$ new_keys数组,或者只是手动重新映射。