2009-09-16 6 views
1

J'ai ce codeUne manière plus facile de faire cela?

public function getList() 
{ 
    $array = array(); 

    $r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 
    while($ro = mysql_fetch_object($r)) 
    { 
     array_push($array , $ro); 
    } 

    if (count($array) > 0) 
     return $array; 
    else 
     return false; 
} 

et je me demandais s'il y a un moyen plus facile de le faire?

Ce code extrait tout d'abord de la base de données, le pousse dans anarray, vérifie son nombre et renvoie le tableau ou false.

Quand je l'ai dans mon tableau $ j'ai besoin de foreach à cet objet pour le faire.

Répondre

3

Vous devez retourner un tableau vide au lieu de faux, alors vous pouvez l'exécuter à travers foreach sans PHP générer une erreur. Vous pouvez encore utiliser $array[] = au lieu de array_push():

public function getList() 
{ 
    $array = array(); 

    $r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 

    while($ro = mysql_fetch_object($r)) 
    { 
      $array[] = $ro; 
    } 
    return $array; 
} 
2

Je ferais probablement quelque chose comme vous proposé.

Une chose que je changerais: au lieu de cela:

array_push($array , $ro); 

Je probaly utilisation:

$array[] = $ro; 

Pour éviter un appel de fonction, ce qui semble inutile dans ce cas (les deux syntaxes devraient faire le même).


En outre, je retournerais toujours un tableau: la fonction est appelée "getList", donc, à mon avis, il devrait renvoyer ... une liste.

Même lorsqu'il n'y a pas d'élément, il doit renvoyer une liste vide (c'est-à-dire vide array), et non un false booléen. Cela signifie également que vous pouvez simplement renvoyer votre tableau $, sans avoir à compter le nombre d'éléments qu'il contient; donc, je suppose que je finirais avec quelque chose comme ceci:

public function getList() 
{ 
    $array = array(); 
    $r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 
    while($ro = mysql_fetch_object($r)) 
    { 
    $array[] = $ro; 
    } 
    return $array; 
} 
-1
$r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 
return mysql_num_rows($r) > 0 ? return mysql_fetch_array($r) : false; 
+0

Nooon. C'est ** horrible **. – Fragsworth

+0

Peut-être que je me trompe, mais, avec cela, la fonction retournera seulement 1 ligne en tant que tableau, et non un tableau de toutes les lignes en tant qu'objets ;; aussi, ayant retourner deux fois dans le?: semble étrange (il va en fait apparemment vous obtenir une erreur d'analyse: erreur de syntaxe, inattendu T_RETURN) –

Questions connexes