在PHP中,distinct是一種很常用的運算符。該運算符常常被用在MySQL查詢中,用于去重查詢。
舉個例子,我們有一個名為students的表,其中有3個字段:id、name和age。其中,id是主鍵,并且有重復項。如下:
id name age ------------------ 1 Jack 18 2 John 19 1 Jack 18 3 Rose 20 2 John 19
現在我們需要對這個表進行去重查詢,例如查詢名字為“Jack”的學生人數:
SELECT COUNT(DISTINCT id) FROM students WHERE name='Jack';
這個查詢語句的結果是2,而不是3,因為DISTINCT關鍵字保證了每個id值只計算一次。
除了在查詢語句中使用DISTINCT關鍵字外,我們還可以使用PHP的array_unique()函數實現數組去重,例如:
$arr = array(1, 2, 1, 3, 2); $arr_unique = array_unique($arr); print_r($arr_unique); //輸出Array ( [0] =>1 [1] =>2 [3] =>3 )
在這個例子中,我們首先聲明了一個數組$arr,其中有重復的元素。然后我們調用array_unique()函數去重,并將結果賦值給$arr_unique。最后我們使用print_r()函數查看結果。
需要注意的是,array_unique()函數只能用于對索引數組去重,無法用于關聯數組。如果需要對關聯數組去重,我們可以使用array_map()函數實現,例如:
$arr = array("name" =>"Jack", "age" =>18, "email" =>"jack@example.com", "age" =>19); $arr_unique = array_map("unserialize", array_unique(array_map("serialize", $arr))); print_r($arr_unique); //輸出Array ( [name] =>Jack [age] =>19 [email] =>jack@example.com )
在這個例子中,我們首先聲明了一個關聯數組$arr,其中有重復的元素。然后我們使用array_map("serialize", $arr)將所有元素序列化為字符串,并使用array_unique()函數將這些字符串去重。然后我們再使用array_map("unserialize", $arr_unique)將所有元素反序列化還原成原始的關聯數組。最后我們使用print_r()函數查看結果。
總之,distinct是一種非常實用的運算符,在需要進行去重查詢的場合下可以節省大量的編程工作。在使用PHP的array_unique()函數去重時,需要注意數組類型的限制,并且需要使用array_map()函數來處理關聯數組的情況。