Compress a php array
I need to take an array that looks something like ...
array( 11 => "fistVal", 19 => "secondVal", 120=> "thirdVal", 200 =>"fourthVal");
and 开发者_Go百科convert it to...
array( 0 => "fistVal", 1 => "secondVal", 2=> "thirdVal", 3 =>"fourthVal");
This is what I came up with -
function compressArray($array){
if(count($array){
$counter = 0;
$compressedArray = array();
foreach($array as $cur){
$compressedArray[$count] = $cur;
$count++;
}
return $compressedArray;
} else {
return false;
}
}
I'm just curious if there is any built-in functionality in php or neat tricks to do this.
You can use array_values
Example taken directly from the link,
<?php
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
?>
Outputs:
Array
(
[0] => XL
[1] => gold
)
Use array_values
to get an array of the values:
$input = array( 11 => "fistVal", 19 => "secondVal", 120=> "thirdVal", 200 =>"fourthVal");
$expectedOutput = array( 0 => "fistVal", 1 => "secondVal", 2=> "thirdVal", 3 =>"fourthVal");
var_dump(array_values($input) === $expectedOutput); // bool(true)
array_values() is probably the best choice, but as an interesting side-note, array_merge and array_splice will also re-index an array.
$input = array( 11 => "fistVal", 19 => "secondVal", 120=> "thirdVal", 200 =>"fourthVal");
$reindexed = array_merge($input);
//OR
$reindexed = array_splice($input,0); //note: empties $input
//OR, if you do't want to reassign to a new variable:
array_splice($input,count($input)); //reindexes $input
精彩评论