在不重新编号php的情况下填充数组中丢失或失效的索引


filling missing or dead indexes of array without renumbering php

如何在不重新编号数组索引的情况下将缺失的索引填充为空格。

**array (size=3)
  0 => string '' (length=0)
  1 => string 'Man' (length=3)
  5 => string 'Mining' (length=6)**

例如,如何通过循环填充缺失索引中的空格,可以是foreach,也可以是for循环。期望输出:

 **array (size=3)
      0 => string '' (length=0)
      1 => string 'Man' (length=3)
      2 => string '' (length=0)
      3 => string '' (length=0)
      4 => string '' (length=0)
      5 => string 'Mining' (length=6)**
<?php
for($i=0; $i<count($array); $i++){
   if(!isset($array[$i]){
      $array[$i] = '';
   }
}

这很简单,但你可能应该探究为什么要这么做,并找到更好的解决方案。

您可以执行类似的操作

<?php
$arr = array(0=>1,1=>2,10=>5); // Your array ...
$maxkey = array_search(max($arr),$arr); // Finding the highest key from your array (required to determine the iterations)
for($i=0;$i<$maxkey;$i++)
{
if(!array_key_exists($i,$arr)) // if key exists.. ignore .. else fill the element with space..
{
$arr[$i]='';
}
}
ksort($arr);// sorts the array using keys..
var_dump($arr);

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => 
    [7] => 
    [8] => 
    [9] => 
    [10] => 5
)

使用array_pad

$a1 = array(0 => '', 1 => 'Man', 5 => 'Mining'); 
$a2 = array_pad(array(), max(array_keys($a1)), ''); 
$a = $a1 + $a2;