PHP中的array_unique函數(shù)可以去掉數(shù)組中的重復值,但是在處理關聯(lián)數(shù)組時可能會出現(xiàn)問題。這時候就需要用到數(shù)組函數(shù)array_unique來處理關聯(lián)數(shù)組了。本文將為大家介紹PHP中的assoc unique函數(shù),并通過豐富的示例幫助大家更好地理解這個函數(shù)的使用方法。
為了更好地理解該函數(shù),我們先來看一個例子。假設我們有以下關聯(lián)數(shù)組:
```php
$arr = array(
array('id' =>1, 'name' =>'Tom'),
array('id' =>2, 'name' =>'Jerry'),
array('id' =>1, 'name' =>'Tom'),
array('id' =>3, 'name' =>'Mike')
);
```
我們使用array_unique函數(shù)來去重,看看會發(fā)生什么。代碼如下:
```php
$result = array_unique($arr);
print_r($result);
```
運行代碼后,我們會發(fā)現(xiàn)輸出的結果還是原來的數(shù)組,沒有去重。這是因為這個函數(shù)默認不支持關聯(lián)數(shù)組。
這時候可以使用array_map函數(shù)來處理,代碼如下:
```php
$result = array_map("unserialize", array_unique(array_map("serialize", $arr)));
print_r($result);
```
運行上面的代碼后,就可以得到去重后的結果,如下所示:
```
Array
(
[0] =>Array
(
[id] =>1
[name] =>Tom
)
[1] =>Array
(
[id] =>2
[name] =>Jerry
)
[3] =>Array
(
[id] =>3
[name] =>Mike
)
)
```
在上面的代碼中,我們使用了array_map函數(shù)和unserialize函數(shù),將所有的數(shù)組元素都轉(zhuǎn)換成字符串,再去重,最后用serialize函數(shù)將結果再轉(zhuǎn)換回數(shù)組。
除了上述方法之外,我們還可以使用for循環(huán)逐個比較元素來去重。代碼如下:
```php
$result = array();
foreach ($arr as $k =>$v){
$flag = true;
foreach ($result as $val){
if($val['id'] == $v['id']){
$flag = false;
break;
}
}
if($flag){
$result[$k] = $v;
}
}
print_r($result);
```
運行該代碼后,也可以得到與前面的結果相同的去重后的數(shù)組。
結語:
以上就是php assoc unique函數(shù)的使用方法及示例,希望對大家有所幫助。在處理關聯(lián)數(shù)組時,如果需要去重,我們可以使用array_map函數(shù)、for循環(huán)等方法。需要注意的是,在使用array_map函數(shù)時,要先將數(shù)組元素轉(zhuǎn)換成字符串,再進行去重。
下一篇php assumed