J'ai une classe Chaussures qui se compose de l'identifiant, de la marque, du prix et de la taille. De plus, j'ai déjà une base de données SQL à partir de laquelle je récupère les données pour les chaussures.
Je crée une classe de vue Shoes qui a 6 colonnes. 4 mentionnés ci-dessus et 2 supplémentaires avec le montant disponible de la chaussure à gauche, et un avec le bouton "acheter".
Je voudrais que le tableau dans les view_shoes montre les chaussures dans l'ordre alphabétique de la marque. Pour que j'aie
public static function shoes() {
$query = self::execute("SELECT * FROM shoes", array());
$data = $query->fetchAll();
$shoes = [];
foreach ($data as $row) {
$shoes[] = new shoe($row['id'], $row["brand"], $row["price"], $row["size"]);
}
return $shoes;
}
Plutôt que
1.Reebok 2.Puma 3.Adidas 4. Geox
, je n'ai pas trouvé beaucoup d'informations sur la façon de le faire. J'ai trouvé des fonctions comme usort , asort mais je ne sais pas comment les mettre en œuvre.
Voici la fonction pour les chaussures. p>
1.Adidas 2.Geox 3.Puma 4.Reebok.
3 Réponses :
Rédigez votre comparateur personnalisé pour le tri.
usort($shoes,function ($a,$b){
return strcmp($a->brand,$b->brand);
//return strcmp($a['brand'],$b['brand']);
})
Chaque élément de $ shoes sera un objet de la classe shoe , pas nécessairement sur lequel vous pouvez utiliser des comparaisons de tableaux. Vous devrez peut-être récupérer la propriété de marque de l'objet.
Utilisez ORDER BY dans votre requête, dans la colonne brand .
$query = self::execute("SELECT *
FROM shoes
ORDER BY brand ASC"
, array());
Vous pouvez modifier votre requête SQL pour l'appliquer au tri
sort($shoes);
Remplacez-la par
SELECT * FROM shoes ORDER BY brand ASC
OU vous pouvez utiliser sort () sur $ shoes si $ shoes est un tableau
SELECT * FROM shoes
$ shoes sera un tableau d'objets. Vous devez trier sur la propriété brand de cet objet.