ObjectifRefactor tableau PHP regroupement et la cartographie
Je me demande s'il y a une meilleure façon de coder ce problème? Je voudrais refactoriser si possible.
Exigences:
- Étant donné une liste des codes ACRISS véhicules (http://www.acriss.org/car-codes.asp), le groupe des véhicules en catégories en fonction de leurs caractères. Une voiture peut être regroupée en une ou plusieurs catégories. Exemple de LTAR: Puisque L est le premier caractère, il serait groupé en Luxe et puisque T est le second caractère, il serait également groupé en tant que Convertible.
- Compact - CB .., CC .., CD .. (tous les codes de véhicules qui commencent par CB, CC ou CD. Exemples: CBAR, CDAR, CCAR)
- économie - EB .. , CE .., ED ..
- Full-Size - FB .., FC .., FD ..
- Luxury - L ... (commence par L)
- Van - .F .. (le deuxième caractère est F)
- Convertible - .T .. (second caractère est T, par exemple: dtAR)
- hybride - ... H (quatrième caractère est H ou I, par exemple: CCAH)
- électrique -. ..C (quatrième caractère est C ou E, par exemple: CCAE)
Exemples d'entrée (chaque code de véhicule aura toujours 4 caractères):
- ECAR
- CCAR
- SFAR
- STAR
- LTAR
Résultats escomptés:
- [category] => Array ([0] => Economie)
- [category] => Array ([0] => Compact)
- [category] = > Tableau ([0] => SUV)
- [category] => Tableau ([0] => convertible)
- [category] => Array ([0] => Luxury [1] => Convertible)
code:
$vehicle_code = str_split($new_car->type);
$categories = [
'CB' => 'Compact',
'CC' => 'Compact',
'CD' => 'Compact',
'EB' => 'Economy',
'EC' => 'Economy',
'ED' => 'Economy',
'0L' => 'Luxury',
'1T' => 'Convertible',
'1V' => 'Van',
'3H' => 'Hybrid',
'3I' => 'Hybrid',
'3C' => 'Electric',
'3E' => 'Electric',
];
foreach($vehicle_code as $key=>$character) {
if (array_key_exists($key.$character,$categories))
{
$new_car->category[] = $categories[$key.$character];
}
}
if (array_key_exists(substr($new_car->type, 0, 2),$categories))
{
$new_car->category[] = $categories[substr($new_car->type, 0, 2)];
}
Peut-être juste moi, mais je n'ai pas la moindre idée ce que vous demandez en fait. – Andreas
J'ai peut-être compris ce que vous demandez. Est-ce que c'est dans la bonne direction? https://3v4l.org/TRYEL – Andreas
@Andreas J'ai mis à jour la question avec quelques informations supplémentaires. Faites-moi savoir si cela a plus de sens maintenant. –