----- Original Message -----
From: "Richard Quadling" <rquadling@xxxxxxxxxxxxxx>
To: <cr.vegelin@xxxxxxxxx>
Cc: <php-general@xxxxxxxxxxxxx>
Sent: Friday, May 21, 2010 1:30 PM
Subject: Re: how to update array keys and keep element order ?
On 21 May 2010 10:56, <cr.vegelin@xxxxxxxxx> wrote:
How do I update an array key without disturbing the element order ?
Suppose an existing array("FR", values ...)
where I want to change 0 => "FR" to "country" => "FR"
and keep the original element order.
TIA, Cor
Something like ...
function arrayKeyChange(array &$array, $oldKey, $newKey) {
if (!array_key_exists($oldKey, $array)) {
trigger_error('Requested key does not exist.', E_USER_WARNING);
return False;
}
if (array_key_exists($oldKey, $array) && array_key_exists($newKey,
$array)) {
trigger_error('Will result in duplicate keys.', E_USER_WARNING);
return False;
}
// Split keys/values
$keys = array_keys($array);
$values = array_values($array);
// Find position of oldKey
$oldKeyPos = array_search($oldKey, $keys, True);
// Replace key
$keys[$oldKeyPos] = $newKey;
// Combine keys/values
$array = array_combine($keys, $values);
return True;
}
Thanks Richard,
I will check your solution. I tried the following:
function ar_replacekeys ($array, $replacements)
{
foreach ($array as $key => $value) // 1)
{
foreach ($replacements as $oldkey => $newkey)
{
if ($key == $oldkey)
{
$array[$newkey] = $value; // 2)
unset($array[$key]); // 2)
}
}
}
}
Works fine, except that replaced elements are placed at the end. (2)
Also tested: foreach ($array as &$key => $value) (1)
but this gave "Key element cannot be a reference"
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php