php 的 array_unique() 函數(shù)用于去除數(shù)組中重復(fù)元素,其缺省使用嚴(yán)格相等 (===)。我們可以通過自定比較函數(shù)來指定去重依據(jù):創(chuàng)建自定比較函數(shù),指定去重的標(biāo)準(zhǔn)(例如根據(jù)元素長度);將自定比較函數(shù)作為第三個參數(shù)傳遞給 array_unique() 函數(shù),即可根據(jù)指定的標(biāo)準(zhǔn)去除重復(fù)元素。
使用 PHP 數(shù)組_unique() 函數(shù)指定去重依據(jù)
簡介
_unique()
函數(shù)用于從一個數(shù)組中去除重復(fù)元素。默認(rèn)情況下,它使用嚴(yán)格相等 (===
) 來判定重復(fù)元素。但是,我們可以通過提供一個自定比較函數(shù)來指定去重依據(jù),從而根據(jù)不同的標(biāo)準(zhǔn)去除重復(fù)元素。
代碼示例
<?php // 創(chuàng)建一個包含重復(fù)元素的數(shù)組 $arr = array( 'a', 'b', 'c', 'd', 'a', 'c', 'e', 'f' ); // 使用默認(rèn)的嚴(yán)格相等比較器去除重復(fù)元素 print_r(array_unique($arr)); // 自定比較器,根據(jù)元素長度去除重復(fù)元素 $length_comparator = function($a, $b) { return strlen($a) == strlen($b); }; // 使用自定比較器去除重復(fù)元素 print_r(array_unique($arr, SORT_REGULAR, $length_comparator)); ?>
登錄后復(fù)制
輸出結(jié)果
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f ) Array ( [0] => a [1] => b [2] => c [4] => d [6] => e )
登錄后復(fù)制
實戰(zhàn)案例
假設(shè)我們有一個學(xué)生對象的數(shù)組,每個對象都有一個名字和年齡。我們可以使用 _unique()
函數(shù)和一個自定比較器來去除具有相同年齡的學(xué)生:
<?php class Student { public $name; public $age; } // 創(chuàng)建一個包含具有相同年齡的學(xué)生對象的數(shù)組 $students = array( new Student('Alice', 20), new Student('Bob', 20), new Student('Carol', 21), new Student('Dave', 21), ); // 自定比較器,根據(jù)學(xué)生的年齡去除重復(fù)元素 $age_comparator = function($a, $b) { return $a->age == $b->age; }; // 使用自定比較器去除重復(fù)元素 $unique_students = array_unique($students, SORT_REGULAR, $age_comparator); // 打印唯一學(xué)生的姓名 foreach ($unique_students as $student) { echo $student->name . '<br>'; } ?>
登錄后復(fù)制
輸出結(jié)果
Alice Carol
登錄后復(fù)制