【问题标题】:How can I add missing index in an array in php?如何在 php 的数组中添加缺失的索引?
【发布时间】:2009-04-08 05:33:17
【问题描述】:

例子:

我有这样的数组:

数组( [0] => 苹果 [2] => 橙色 [5] => 梨 [8] => 梨 )

有一个函数可以补全缺失的索引:1,3,4,6,7????

【问题讨论】:

    标签: php arrays


    【解决方案1】:

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

    $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);
    

    【讨论】:

      【解决方案2】:

      你可以尝试从最低索引到最高索引的 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; 
          }
      

      【讨论】:

        【解决方案3】:
        for($i=0;i<count($array);++$i){
            $array[$i] = isset($array[$i])? $array[$i] : '';
        }
        

        不过,它只是用空字符串填充缺失的键。不确定这是否适合您。

        编辑

        刚刚注意到 Perr0_hunter 在我之前写了几乎相同的东西:P

        【讨论】:

          【解决方案4】:

          如果你想要做的是重新排列数组,那么你得到

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

          只需创建一个新数组并将值复制到其中。它会按顺序分配新的索引

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

          【讨论】:

          • 使用 array_Values() 而不是你的 for 循环
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-27
          • 1970-01-01
          • 1970-01-01
          • 2019-09-03
          • 2016-08-11
          • 1970-01-01
          相关资源
          最近更新 更多