重新映射 2D 数组每行中的键,以将字符串键替换为新的字符串键



>我有一个如下所示的数组

Array
(
    [0] => Array
        (
            [name] => Alex
            [age] => 30
            [place] => Texas                
        )
    [1] => Array
        (
            [name] => Larry
            [age] => 28
            [place] => Memphis
        )
)

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

使用 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
        )
)

在线演示

array_map是你的朋友,

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

演示

我相信

唯一的方法是创建一个新数组,并将每个值与旧键分配给具有新键的值。

<?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;
    }
?>

最新更新