php 重新Map2D数组的每行中的键,以使用新的字符串键替换字符串键

gudnpqoy  于 2023-04-19  发布在  PHP
关注(0)|答案(3)|浏览(118)

我有一个像下面这样的数组

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

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

        )

)

我该如何更改密钥名称?比如“name”更改为“firstname”,“age”更改为“years”,“place”更改为“address”?

mf98qq94

mf98qq941#

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

izkcnapc

izkcnapc2#

array_map是你的朋友

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

DEMO

31moq8wy

31moq8wy3#

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

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

相关问题