程式狂想筆記

一個攻城師奮鬥史

0%

PHP 陣列 array_unique 踩雷小記

最近用 array_unique
PHP: array_unique - Manual
他可以過濾重複的內容
但不小心用出一個 bug

例如有一個$array = [0,1,2,2,3,4];
發現array_unique(array);
var_dump 一看,key 發現有跳號

1
2
3
4
5
6
<?php
$array = [0,1,2,2,3,4];

var_dump($array);
echo PHP_EOL;
var_dump(array_unique($array));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
array(6) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(2)
[4]=>
int(3)
[5]=>
int(4)
}

array(5) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(2)
[4]=>
int(3)
[5]=>
int(4)
}

所以這時候做for($a = 0; $a < count($a); $a++)會有問題

這邊有想到兩個做法

  1. 改 foreach
  2. array_values(\$array)

可以解決