View Full Version : Can I reset array keys?
Best explained as an example:
$array[8] = 'Bob';
$array[17] = 'Geoff';
$array[2] = 'Alice';
Can I get the above array to become this?
$array[0] = 'Alice';
$array[1] = 'Bob';
$array[2] = 'Geoff';
The names are examples... I do not want any change in the order of the array. I simply want the keys to be like this so I can access the data more easily.
If there is not a simple solution that i have overlooked then I will post here later with more information of what I am actually trying to achieve.
Thanks in advance :)
firepages
04-06-2003, 05:36 PM
there must be a simpler way but I am yakked if I can think of it right now ?
<?
$array[8] = 'Bob';
$array[17] = 'Geoff';
$array[2] = 'Alice';
//if you want
//sort($array);
$new=array_merge(array(),$array);
print_r($new);
?>
strangely the results of what you wrote do this:
Array
(
[0] => Bob
[1] => Geoff
[2] => Alice
)
which is actually in the wrong order.
$array[8] = 'Bob';
$array[17] = 'Geoff';
$array[2] = 'Alice';
^^^ with that as the original array, should it not come out as this?:
Array
(
[0] => Alice
[1] => Bob
[2] => Geoff
)
the code may still work for me as the array *should* have already been loaded in the correct order. thanks again for your help :)
I know that post is too old but since it is in google's result for the keyword 'php reset array keys' I have decided to add the solution to help others ;)
The first idea which came to my mind was this:
$threads = array('10'=>'one', '2'=>'two', '15'=>'three');
$keys = range(0, count($threads)-1);
$values = array_values($threads);
$threads = array_combine($keys, $values);
but later I have discovered that there is even more simple way :)
$threads = array('10'=>'one', '2'=>'two', '15'=>'three');
$threads = array_values($threads);
Good luck with your script
rushhh
02-02-2009, 08:28 AM
Thanks PHP6, I was looking for that. :thumbsup:
Fou-Lu
02-02-2009, 06:00 PM
array_merge (http://php.ca/manual/en/function.array-merge.php)
Given a single array, it will reindex the values for you as long as they are integer based.
Inigoesdr
02-03-2009, 06:55 AM
If your array is out of order, like the OP was talking about, run ksort() (http://php.net/ksort) on it before using array_values() (http://php.net/array_values) or array_merge() (http://php.net/array_merge).
vBulletin® v3.8.2, Copyright ©2000-2012, Jelsoft Enterprises Ltd.