2017-01-18 4 views
1

J'essaie d'utiliser array_unique(); mais ne fonctionne pas c'est mon code s'il vous plaît aidez-moi ce que je fais mal? Je veux afficher tous les tags sans doublonscomment supprimer les doublons php array_unique ne fonctionne pas

ID | TAGS 
1 | rock, punk, jazz 
2 | pop, rock, classic 
3 | jazz, blues, rock 
4 | rock, rap, metal 

$wynik = mysql_query("SELECT * FROM nabk_t_item_tags") or die('Błąd zapytania'); 
if (mysql_num_rows($wynik) > 0) { 
    while ($r = mysql_fetch_assoc($wynik)) { 
     $input = $r['tags']; 
     $fields = explode(',', $input); 
     $fields2 = array_unique($fields); 
     foreach ($fields2 as $field) { 
      echo '"' . $field . '",'; 
     } 
    } 
} 
+5

Chaque fois que vous utilisez [la 'mysql_'] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) l'extension de la base de données dans la nouvelle code [ ** [un chaton est étranglé quelque part dans le monde] (http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg) ** il est obsolète et a été pendant des années et est parti pour toujours en PHP7. Si vous êtes en train d'apprendre PHP, dépensez votre énergie pour apprendre les extensions de base de données 'PDO' ou' mysqli' et les instructions préparées. [Commencer ici] (http://php.net/manual/fr/book.pdo.php) – RiggsFolly

+3

Commencez par nous montrer un exemple de ce qui est contenu dans la colonne 'tags'. Puis décrivez ce qui ne va pas avec votre code existant qui a besoin d'être réparé – RiggsFolly

+0

désolé s'il vous plaît élaborer, qu'est-ce que vous attendez et que fait-il? Vous voulez recevoir seulement un de chaque valeur? –

Répondre

0

Essayez ce code.

if (mysql_num_rows($wynik) > 0) { 
    $used=array(); 
    while ($r = mysql_fetch_assoc($wynik)) { 
     $input = $r['tags']; 
     $fields = explode(',', $input); 
     foreach($fields as $tg){ 
      if(!isset($used[$tg])){ 
       echo '"' . $tg . '",'; 
       $used[$tg]=" "; 
      } 
     } 
    } 
    unset($used); 
} 
+0

Cette solution fonctionne parfaitement. Merci beaucoup à tous pour votre aide! – Tomasz

+0

@Tomasz Votre bienvenue .. – Confused

1

Vous devez mettre tous les tags de la requête dans un seul tableau. Ainsi, en utilisant votre code existant:

// $fields2 = array_unique($fields); 
$fields2 = array_merge($fields2, $fields); 

Puis, après la boucle while, $fields2 aura toutes les balises et vous pouvez array_unique ce tableau. Donc, ajoutez ces lignes et voyez le résultat:

} // end while 
    $unique_tags = array_unique($fields2); 
    var_dump($unique_tags); 
} // end if 
+0

Votre solution est bonne - pour quelqu'un qui a travaillé avec PHP (évidemment il ne l'a pas fait), donc il peut ne pas le comprendre. Modifiez votre réponse avec un code de travail complet et des commentaires, et il pourrait l'obtenir. – besciualex

+0

@besciualex merci, édité pour le rendre plus facile à comprendre – imel96