2011-07-02 5 views
-2

Je veux afficher la chaîne en virgule séparées par des virgulesComment diviser une chaîne séparée par une virgule?

Voici mon code

function GetItemIds() 
{ 
    $i=0; 

    $query="SELECT item_id FROM common.items ORDER BY item_id DESC LIMIT 10"; 
    $str=""; 

    $result= mysql_query($query); 

    while($result1= mysql_fetch_row($result)) 
    { 
     if($i==0) 
     { 
      $str .= $result1[0]; 
     } 
      else 
     { 
     $str .=",".$result1[0]; 
     } 
     } 

     echo $strs; 
    } 

mais ici j'imprimer str je sortie 12.345.678 comme ça, mais je veux 1,2,3,4 donc S'il vous plaît aidez-moi

Merci à l'avance

+2

Vous avez oublié d'incrémenter 'I' – Stephen

+1

$, il pourrait être aussi plus élégant (mais probablement il est une question de goût) pour pousser les éléments dans un tableau et puis utilisez la fonction join/implode: http://php.net/manual/en/function.join.php – ShinTakezou

Répondre

1

Une meilleure façon:

function GetItemIds($num = 10) { 
    $q = "SELECT item_id FROM common.items ORDER BY item_id DESC LIMIT " . $num; 
    $result = mysql_query($q); 
    $ids = array(); 
    while($row = mysql_fetch_assoc($result)) { 
     $ids[] = $row['item_id']; 
    } 
    return implode(',', $ids); 
} 

echo GetItemIds(); 
2

Eh bien, de toute évidence, vous n'êtes pas de plus en plus la variable $i à la fin de la boucle.

+2

Évidemment? Évidemment, ce n'était pas si évident. – Stephen

+1

hm, si vous lisez "abc" quand vous attendez "a, b, c" il doit être car il n'exécute jamais '$ str. =", ". $ Result1 [0];' et s'il ne l'exécute jamais, il signifie que $ i n'est jamais! = 0, et la raison la plus évidente d'un tel événement (avant de penser à des bugs obscurs) est que $ i ne change pas, et $ i ne change pas si vous ne le changez pas, donc il est manque une mise à jour sur $ i ... le * évidemment * n'était pas si ridicule. Le fait que ces erreurs ne bosse pas aux yeux dans un petit laps de temps ne signifie pas que la raison pour laquelle quelque chose se passe n'est pas évident en général. Pour l'OP aussi, maintenant, ça va paraître évident! – ShinTakezou

0

Votre code vérifie si $i == 0, et si c'est le cas, vous faites $str .= $result1[0].

Après avoir défini $i comme 0, vous ne le changez jamais. Ajoutez $i++ à la fin de votre boucle.

0
function GetItemIds() 
{ 
    $i=0; 

    $query="SELECT item_id FROM common.items ORDER BY item_id DESC LIMIT 10"; 
    $str = ""; 
    $result = mysql_query($query); 

    while($result1 = mysql_fetch_row($result)) 
    { 
     if($i == 0) 
     { 
      $str .= $result1[0]; 
     } 
     else 
     { 
      $str .=",".$result1[0]; 
     } 

     $i++; 
    } 

    echo $strs; 
} 
2

Une autre idée de mise en œuvre:

$a = array(); 
while($result1= mysql_fetch_row($result)) 
{ 
    $a[] = $result1[0]; 
    } 
echo implode(',', $a); 
0

J'utiliser un tableau, puis rejoindre:

$arr = array(); 
    while($result1 = mysql_fetch_row($result)) 
    { 
    array_push($arr, $result1[0]); 
    } 
    return join(",", $arr); 

A propos de votre code dont vous avez besoin pour incrémenter $ i, et retourner $ str non $ strs ... (erreur typo seulement je suppose)

-1

Je pense que vous voulez faire une chaîne formatée à partir d'un tableau de résultats.

remplacer

while($result1= mysql_fetch_row($result)) 
{ 
... 
} 

par

mysql_fetch_array($result,MYSQL_NUM); 
$str = implode(',',$result); 
Questions connexes