更改php数组问题中的键描述

时间:2014-02-28 13:02:48

标签: php

我有一个类似下面的数组

Array
(
    [0] => Array
        (
            [name] => Alex
            [age] => 30
            [place] => Texas                
        )

    [1] => Array
        (
            [name] => Larry
            [age] => 28
            [place] => Memphis

        )

)

我如何更改密钥名称?喜欢“名字”到“名字”,“年龄”到“年”,“地点”到“地址”?

3 个答案:

答案 0 :(得分:2)

使用foreach循环迭代您的数组,然后将array_combinearray_values()结合使用以创建新数组:

$keys = array('firstname', 'years', 'address');
foreach ($array as & $subarr) {
    $subarr = array_combine($keys, array_values($subarr));
}

print_r($array);

输出:

Array
(
    [0] => Array
        (
            [firstname] => Alex
            [years] => 30
            [address] => Texas
        )

    [1] => Array
        (
            [firstname] => Larry
            [years] => 28
            [address] => Memphis
        )

)

Online demo

答案 1 :(得分:1)

array_map是你的朋友,

$users = array_map(function($user) {
    return array(
        'firstname' => $user['name'],
        'years' => $user['age'],
        'location' => $user['place']
    );
}, $users);

DEMO

答案 2 :(得分:0)

我认为唯一的方法是创建一个新数组,并使用旧键将每个值与旧键分配给值。

<?php
    //$originalArray is array from the question.
    for($i=0; $i<=count($originalArray); $i++){
        $originalArray[$i] = rekeyArray($originalArray[$i]);
    }

    function rekeyArray($a){
        $result = array();

        if(isset($a['name']))
        $result['firstname'] = $a['name'];

        if(isset($a['age']))
        $result['years'] = $a['age'];

        if(isset($a['place']))
        $result['address'] = $a['place'];

        return $result;
    }
?>