2011-12-13 4 views
1

J'ai eu une table dans ma base de données MySql:array_unique ne fonctionne pas en PHP?

pageid | text 
-----------+---------- 
    1  | test 
-----------+---------- 
    2  | example 
-----------+---------- 
    3  | another 
-----------+---------- 
    1  | example1 

et ce code PHP:

$query = "SELECT pageid FROM test"; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)) 
    { 
    $id = $row['pageid']; 
    $id1 = array($id); 
    $id2 = array_unique($id1); 
    foreach ($id2 as $value) 
    { 
    echo $value . "<br>"; 
    } 
    } 

Mais il retourne:

1 
2 
3 
1 

Je voudrais faire les pageid s unique. Donc, je voudrais faire écho sur le numéro 1, une fois. Comme ceci:

1 
2 
3 

Alors qu'est-ce que je fais mal? Comment pourrais-je réaliser ce que je veux?

Merci à l'avance ...

[Je sais que ce code ne fait pas beaucoup de sens, mais cela est juste une démo pour cette question et j'ai un code beaucoup plus compliqué :)]

+0

Je suis sûr que vous savez que vous pouvez utiliser par groupe en mysql, mais juste en cas d'incident, voici votre tête en l'air. – Layke

Répondre

4

Bien sûr, la vraie réponse à cette situation est de sélectionner des enregistrements distincts pour commencer:

$query = "SELECT DISTINCT pageid FROM test"; 

Mais la raison pour laquelle votre code ne fonctionne pas ...

Vous déclarez $id1 comme un tableau, mais pas à lui annexant. Au lieu de cela, vous créez simplement un tableau à 1 élément à chaque fois. Au lieu de cela, ajoutez tous les résultats puis appelez array_unique()

$query = "SELECT pageid FROM test"; 
$result = mysql_query($query); 

// Declare array first 
$id1 = array(); 
while($row = mysql_fetch_array($result)) 
    { 
    $id = $row['pageid']; 
    // Append to the array... 
    $id1[] = $id; 
    } 

// Call array_unique() outside the loop: 
$id2 = array_unique($id1); 
foreach ($id2 as $value) 
{ 
    echo $value . "<br>"; 
} 
+0

Merci beaucoup Michael, cela a aidé beaucoup ... – Akos

0

Vous pouvez le faire dans votre SELECT en faisant quelque chose comme SELECT DISTINCT pageid FROM test ou en utilisant GROUP BY comme ceci:

SELECT pageid FROM test WHERE 1 GROUP BY pageid 
0

Vous pouvez utiliser votre mot-clé Distinct dans sql query.That vous retourner les vaues uniques de la page