PHP重置数组为连续数字索引的三种方式

PHP重置数组为连续数字索引的三种方式

比如这样的一个php数组:

  1. $arr = array(
  2. 1 => 'apple',
  3. 3 => 'banana',
  4. 5 => 'orange'
  5. );

想要转换为这样的数组:

  1. $arr = array(
  2. 0 => 'apple',
  3. 1 => 'banana',
  4. 2 => 'orange'
  5. );

1、推荐的方式 array_values 方法

这样方式无论对普通数组还是关联数组都适用

  1. <?php
  2. $arr = array(
  3. 1 => 'apple',
  4. 3 => 'banana',
  5. 5 => 'orange'
  6. );
  7. print_r(array_values($arr));
  8. $arr1 = array(
  9. 'name' => 'jerry',
  10. 'age' => 16,
  11. 'height' => '18cm'
  12. );
  13. print_r(array_values($arr1));

输出结果:

  1. [root@localhost php]# php array.php
  2. Array
  3. (
  4. [0] => apple
  5. [1] => banana
  6. [2] => orange
  7. )
  8. Array
  9. (
  10. [0] => jerry
  11. [1] => 16
  12. [2] => 18cm
  13. )

2、使用 array_merge 方法

该方法如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。所以只能适用于数字索引。

  1. <?php
  2. $arr = array(
  3. 1 => 'apple',
  4. 3 => 'banana',
  5. 5 => 'orange'
  6. );
  7. print_r(array_merge($arr));
  8. $arr1 = array(
  9. 'name' => 'jerry',
  10. 'age' => 16,
  11. 'height' => '18cm'
  12. );
  13. print_r(array_merge($arr1));

输出结果:

  1. [root@localhost php]# php array.php
  2. Array
  3. (
  4. [0] => apple
  5. [1] => banana
  6. [2] => orange
  7. )
  8. Array
  9. (
  10. [name] => jerry
  11. [age] => 16
  12. [height] => 18cm
  13. )

3、循环遍历

最原始的方式,臃肿且不够优雅,极力抵制。

  1. <?php
  2. function resetArr($arr){
  3. $temp = array();
  4. foreach($arr as $v){
  5. $temp[] = $v;
  6. }
  7. return $temp;
  8. }
  9. $arr = array(
  10. 1 => 'apple',
  11. 3 => 'banana',
  12. 5 => 'orange'
  13. );
  14. print_r(resetArr($arr));
  15. $arr1 = array(
  16. 'name' => 'jerry',
  17. 'age' => 16,
  18. 'height' => '18cm'
  19. );
  20. print_r(resetArr($arr1));

That‘s it!