2014-02-28 26 views
1

键描述我有这样的一个下面改变PHP数组问题

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

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

     ) 

) 

我将如何更改密钥名称的数组?像“姓名”到“名字”,“年龄”到“岁月”,“地点”到“地址”?

+0

可以在这里找到你的问题的答案:http://stackoverflow.com/questions/308703/php-change-array-keys – Gabriel

+0

http://stackoverflow.com/questions/240660/in-php-how-do-you-change-the-key-of-an-array-element –

回答

1

array_map是你的朋友,

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

DEMO

+1

为什么降低投票率?我认为这是一个很好的解决方案! – GuyT

+2

@GuyT:这是一个有效的解决方案(比我的功能更强大)。但[我的回答](http://stackoverflow.com/a/22096142/1438393)也被压低了:/ –

+0

我也很困惑。至少他应该评论投票的理由。 – Rikesh

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

你可以评论downvotes吗? – jan

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

+0

我被困惑了;那么downvoter会很好的解释为什么他/她认为这是一种无益和/或不正确的回应,所以我可以改善它。 –

+0

很多讨厌这个问题。第二个已被低估的答案已经... – jan