2009-04-08 86 views

回答

3

这应该是更大的阵列更快。对于较小的数组,任何方法都可以。

$existingKeys = array_keys($array); 

//you can use any value instead of null 
$newKeys = array_fill_keys(range(min($existingKeys), max($existingKeys)), null); 
$array += $newKeys; 

//optional, probably not needed 
ksort($array); 
-1

如果你想要做的是重新排序阵列等你拿

Array([0] => Apple [1] => Orange [2] => Pear [3] => Pear) 

只需创建一个新的磁盘阵列和值复制到它。它会分配新的索引顺序

$new_array = array(); 
for($value in $old_array) 
    $new_array[] = $value; 
+0

使用array_Values()代替for循环 – OIS 2009-04-08 08:37:51

1

你可以尝试从最低指数为()到最高和完整,如果它是空的

for($i = 0 ;$i <= 8 ; $i++) 
{ 
//if it's not set 
if(!isset($array[$i])) 
{ 
//set to empty 
$array[$i] = ""; 
} 

} 

此外,你可以先算阵列上元素的数量并将其包装在一个函数中

function completeIndexes($array) 
    { 

    $total = count($array); 
    for($i = 0 ;$i < $total ; $i++) 

     { 
     //if it's not set 
     if(!isset($array[$i])) 
     { 
     //set to empty 
     $array[$i] = ""; 
     } 

     } 
return $array; 
    } 
1
for($i=0;i<count($array);++$i){ 
    $array[$i] = isset($array[$i])? $array[$i] : ''; 
} 

虽然它只是用空字符串填充丢失的键。不知道这是否适合你。

编辑

只注意到Perr0_hunter写了几乎同样的事情,我之前做过:P