开发者

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜