如何编辑数组的密钥?

时间:2010-02-08 05:24:29

标签: php arrays

一旦完成密钥,是否可以编辑密钥?

我知道你可以使用不同的密钥创建一个数组,但我在php网站上看不到有关编辑后者的任何内容。

原始阵列:

Array
(
    [0] => first
    [1] => color
)

我想要的是什么:

Array
(
    [newName] => first
    [1] => color
)

3 个答案:

答案 0 :(得分:2)

如果要更改项目的键,则必须使用新键设置值,并使用旧键设置unset()(此技术更改数组的顺序):

$arr['newName'] = $arr[0];
unset($arr[0]);

或使用一个放弃循环的包装器,允许你修改键,如下:

function array_change_key(&$array, $search, $replace) {
    $keys = array_keys($array);
    $values = array_values($array);

    // Return FALSE if replace key already exists
    if(array_search($replace, $keys) !== FALSE) return FALSE;

    // Return FALSE if search key doesn't exists
    $searchKey = array_search($search, $keys); 
    if($searchKey === FALSE) return FALSE;

    $keys[$searchKey] = $replace;
    $array = array_combine($keys, $values);

    return TRUE; // Swap complete
}

答案 1 :(得分:1)

这是一种替代的,简单的方法,只要你在一次调用中对每个数组进行所有重新键控,这可能是相当有效的:

<?php
function mapKeys(array $arr, array $map) {
  //we'll build our new, rekeyed array here:
  $newArray = array();
  //iterate through the source array
  foreach($arr as $oldKey => $value) {
    //if the old key has been mapped to a new key, use the new one.  
    //Otherwise keep the old key
    $newKey = isset($map[$key]) ? $map[$key] : $oldKey;
    //add the value to the new array with the "new" key
    $newArray[$newKey] = $value;
  }
  return $newArray;
}

$arr = array('first', 'color');
$map = array(0 => 'newName');

print_r(mapKeys($arr, $map));

答案 2 :(得分:0)

$array = array('foo', 'bar');

$array['newName'] = $array[0];
unset($array[0]);

这几乎是你唯一能做的事情。