2010-12-15 3 views
4

У меня есть массив какPHP массив ключевых изменений

$arr = array('key1' => 'hello'); 

Теперь мне нужно изменить ключ, есть ли почему я могу добиться этого

Я знаю, что могу сделать это так:

$arr['key2'] = $arr['key1']; unset($arr['key1']); 

Но, есть ли другой способ?

+1

Я думаю, что метод copy/delete является лучшим. – Phil

+1

Я не думаю, что есть, но что случилось с методом в вашем вопросе? – AgentConundrum

+0

это в значительной степени. – yoda

ответ

1

Если бы вы были немного сумасшедшими вы могли бы написать функцию.

function changeKey(array $array, $oldKey, $newKey) { 

    if (! array_key_exists($array, $oldKey)) { 
     return $array; 
    } 

    $array[$newKey] = $array[$oldKey]; 
    unset($array[$oldKey]); 
    return $array; 
} 

Это ничего не сделает, если оригинального ключа нет. Он также перезапишет существующие ключи.

+0

спасибо alex, и, пожалуйста, проверьте ссылку, предоставленную Ben , это хорошо –

+0

@IMJM Я использую PHP в течение многих лет и никогда не сталкивался с проблемой, когда замена ключей была решением. – alex

+0

Я тоже использую PHP в течение 7 лет, но на этот раз я редактирую чей-то код, который плохо написан, так что не было другого выбора, но все равно спасибо за помощь –

3

Как вы это сделали, это правильный путь. Вы не можете изменить ключ в ассоциативном массиве. Вы можете добавлять или удалять ключи. Если вам нужно сделать много «ключевых изменений», вам может потребоваться отступить и оценить, используете ли вы наиболее подходящую структуру данных для своей проблемы.

+1

спасибо за комментарий –

Смежные вопросы