2014-10-05 34 views
2

我有这个PHP数组;快速的方式来重命名关联数组的这个数组的键

array(
    (int) 0 => array(
     'KeyName' => array(
      'id' => '1', 
      'number' => '11A', 
     ) 
    ), 
    (int) 1 => array(
     'KeyName' => array(
      'id' => '2', 
      'number' => '22A', 
     ) 
    ), 
    (int) 2 => array(
     'KeyName' => array(
      'id' => '16', 
      'number' => '001A', 
     ) 
    ) 
) 

我想改变'KeyName''NewKeyName'使得新的数组变;

array(
    (int) 0 => array(
     'NewKeyName' => array(
      'id' => '1', 
      'number' => '11A', 
     ) 
    ), 
    (int) 1 => array(
     'NewKeyName' => array(
      'id' => '2', 
      'number' => '22A', 
     ) 
    ), 
    (int) 2 => array(
     'NewKeyName' => array(
      'id' => '16', 
      'number' => '001A', 
     ) 
    ) 
) 

什么是快速的方法来做到这一点?

下面是我试过的代码;

foreach ($array as $key) 
{ 
    $array[$key]['KeyName']=$array[$key]['NewKeyName']; 
} 

但我得到了一些非法的抵消错误。有更好的方法来解决这个问题吗?

+0

+1问得好搜索栈! – 2014-10-05 06:22:13

回答

1

在您的代码中,您获取的值不是密钥$key。您必须尝试$array as $key => $val而不是$array as $key。此外,一旦进入循环,只需将值复制到新索引并取消设置现有索引。

foreach ($array as $key => $val) 
{ 
    $array[$key]['NewKeyName'] = $array[$key]['KeyName']; 
    unset($array[$key]['KeyName']); 
} 
1

既然你正在寻找替换,只是使用foreach内部的副本:

基本上你把数组的整个副本而不是使用关键的:

foreach ($array as $key) { 
       //^this is the copy of that sub array not the key 
    $array[$key]['KeyName']=$array[$key]['NewKeyName']; 
} 

所以,如果你想终于在一个新问题:

$new_array = []; 
foreach($array as $key => $value) { 
       //^keys goes here 
    $new_array[$key]['NewKeyName'] = $value['KeyName']; 
} 

或者因为你不能引用键:

foreach($array as $key => $value) { 
    $array[$key]['NewKeyName'] = $value['KeyName']; 
    unset($array[$key]['KeyName']); 
} 
1

试试这个代码,它应该工作:有可用的