【问题标题】:Built-in PHP function to reset the indexes of an array?内置 PHP 函数来重置数组的索引?
【发布时间】:2009-07-28 19:09:28
【问题描述】:

例子:

$arr = array(1 => 'Foo', 5 => 'Bar', 6 => 'Foobar');
/*... do some function so $arr now equals:
    array(0 => 'Foo', 1 => 'Bar', 2 => 'Foobar');
*/

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    使用array_values($arr)。这将返回所有值的常规数组(按数字索引)。

    PHP docs for array_values

    【讨论】:

    • 不客气。感谢 php 和数百万个数组函数。
    • Brian,诅咒 PHP 和数百万个数组函数。 ;)
    【解决方案2】:
    array_values($arr);
    

    【讨论】:

      【解决方案3】:

      要添加到其他答案,array_values() 不会保留字符串键。如果您的数组混合了字符串键和数字键(这可能表明设计不佳,但仍有可能发生),您可以使用如下函数:

      function reset_numeric_keys($array = array(), $recurse = false) {
          $returnArray = array();
          foreach($array as $key => $value) {
              if($recurse && is_array($value)) {
                  $value = reset_numeric_keys($value, true);
              }
              if(gettype($key) == 'integer') {
                  $returnArray[] = $value;
              } else {
                  $returnArray[$key] = $value;
              }
          }
      
          return $returnArray;
      }
      

      【讨论】:

        【解决方案4】:

        据我所知,你可能已经检查过函数here

        但我可以想象自己写一个简单的函数

        resetarray($oldarray)
        {
        for(int $i=0;$i<$oldarray.count;$i++)
             $newarray.push(i,$oldarray[i])
        
        return $newarray;
        }
        

        我对语法有点前卫,但我想你明白了。

        【讨论】:

        • -1:不仅语法错误,而且逻辑也错误。更不用说已经发布了正确的答案。
        猜你喜欢
        • 2011-11-24
        • 2014-08-30
        • 2011-02-26
        • 2013-06-23
        • 1970-01-01
        • 1970-01-01
        • 2014-09-16
        • 2011-01-20
        • 2012-07-09
        相关资源
        最近更新 更多