2013-07-30 10 views
-4

Mon script PHP retourne un tableau et j'aimerais supprimer les doublons dans ce tableau. Pouvez-vous s'il vous plaît dites-moi comment? Je ne veux pas supprimer les doublons de MySQL, juste de PHP. J'ai vu quelques questions similaires à celle-ci, mais je n'ai pas trouvé de moyen d'implémenter des réponses.Supprimer les doublons du tableau PHP

Mon 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); 

Et script est de retourner ce:

{"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

Avez-vous essayé [ 'array_unique()'] (http://php.net/array_unique)? –

+2

Pourquoi voulez-vous supprimer les doublons en PHP? Google 'SELECT DISTINCT'. – Jon

+0

Annonce de service public: ** 'array_unique' ne fonctionne pas dans les cas de ce type car les éléments sont eux-mêmes des tableaux **. Je vous remercie. – Jon

Répondre

0

Remplacer ceci:

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

Avec ceci:

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

Tnx beaucoup. Cela fonctionne. – Michael

+0

De rien. –

+0

J'ai un problème, maintenant, quand j'ai implémenté votre solution, je reçois un numéro devant mon tableau. Pourquoi? Puis-je l'enlever? "11": {"Grad": "Beograd", "Predmet": "matematika"} – Michael

1

essayer cette fonction http://php.net/manual/en/function.array-unique.php

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

de la documentation Exemple de php.net:

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

Je ne sais pas comment l'utiliser ... – Michael

+0

J'ai ajouté un exemple dans mon message – Freelancer

+0

encore je ne comprends pas, comment mettre en œuvre dans mon cas ... désolé de déranger – Michael