2013-07-30 140 views
-4

我的PHP腳本正在返回一些數組,我想刪除該數組中的重複項。你能告訴我怎麼樣?我不想從PHP中刪除重複的數據。我看到了一些與此類似的問題,但我找不到解決方案。刪除PHP數組中的重複項

我的PHP:

$con = mysqli_connect($host, $user, $pwd, $db); 

if(mysqli_connect_errno($con)) { 
    die("Failed to connect to MySQL: " . mysqli_connect_error()); 
} 


$sql = "SELECT Grad, Predmet FROM lista"; 
$result = mysqli_query($con, $sql); 

$rows = array(); 

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 

     $rows[] = $row; 
    } 

mysqli_close($con); 

$rows = (object) array('lista' => $rows); 
echo json_encode($rows); 

而且腳本返回此:

{"lista":[{"Grad":"Beograd","Predmet":"matematika"},{"Grad":"Novi_Sad","Predmet":"matematika"},{"Grad":"Beograd","Predmet":"matematika"},{"Grad":"Novi_Sad","Predmet":"matematika"},{"Grad":"Beograd","Predmet":"informatika"},{"Grad":"Beograd","Predmet":"informatika"}]} 
+0

你試過['array_unique()'](http://php.net/array_unique)? –

+2

爲什麼你想刪除PHP中的重複? Google'SELECT DISTINCT'。 – Jon

+0

公共服務公告:**'array_unique'在這種情況下不起作用,因爲這些元素本身就是數組**。謝謝。 – Jon

回答

0

替換此:

$rows = (object) array('lista' => $rows); 
echo json_encode($rows); 

有了這個:

$lista = array_map('unserialize', array_unique(array_map('serialize', $rows))); 
echo json_encode((object) array('lista' => $lista)); 
+0

Tnx很多。這是行得通的。 – Michael

+0

不客氣。 –

+0

我遇到了問題,現在,當我實施您的解決方案時,我得到了一個數字在我的數組前面。爲什麼?我可以刪除它嗎? 「11」:{「Grad」:「Beograd」,「Predmet」:「matematika」} – Michael

1

試試這個功能從php.net文檔http://php.net/manual/en/function.array-unique.php

array array_unique (array $array [, int $sort_flags = SORT_STRING ]) 

例:

<?php 
    $input = array("a" => "green", "red", "b" => "green", "blue", "red"); 
    $result = array_unique($input); 
    print_r($result); 
?> 
+0

我不知道如何使用此... – Michael

+0

我在我的帖子中添加了一個示例 – Freelancer

+0

仍然我沒有得到它,如何在我的情況下執行...抱歉打擾 – Michael