示例:
我有这样的数组:
阵列( [0] =>苹果 [2] =>橙子 [5] =>梨 [8] =>梨 )
有一个功能可以完成缺失的索引:1,3,4,6,7 ????
答案 0 :(得分:5)
对于较大的阵列,这应该更快。对于较小的阵列,任何方法都可以。
$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 :(得分:1)
您可以尝试从最低索引到最高索引的for(),如果它是空的则完成
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;
}
答案 2 :(得分:1)
for($i=0;i<count($array);++$i){
$array[$i] = isset($array[$i])? $array[$i] : '';
}
它只是用空字符串填充缺少的键。不确定这是否适合你。
修改强>
刚才注意到Perr0_hunter在我做之前写了几乎相同的东西:P
答案 3 :(得分:-1)
如果你要做的是重新排序数组,那么你得到
Array( [0] => Apple [1] => Orange [2] => Pear [3] => Pear )
只需创建一个新数组并将值复制到其中。它将按顺序分配新索引
即。
$new_array = array();
for( $value in $old_array )
$new_array[] = $value;