-3
votes

Le groupe par groupe d'âge retourne vide

J'essaie de calculer l'âge des utilisateurs, puis de regrouper ces résultats comme les suivants: xxx

Cependant, lorsque je dd ($ groupebyage) Je suis toujours recevoir

Array vide comme ('touche' => 0)

Je ne suis pas sûr que je ne passe pas $ utilisateurs correctement ou quel est le fichier émis.


5 commentaires

$ La groupeByage n'est pas la variable que vous souhaitez dd. à la place dd $ utilisateurs variable


Et si u-> âge == 20 ?


Qu'est-ce que endforeach et endif signifie dans le contexte php? Qu'est-ce que u ? Vous utilisez u-> naissance (BTW Veuillez fournir un exemple de code sans erreurs de syntaxe.


Vérifiez votre fonction La fonction , il renvoie $ Âge qui n'est jamais défini. Et que foreach n'est pas fermé nulle part? En outre, $ eurogroup ['inférieur à 20'] n'est pas le même que $ eurotgroup ['inférieur à 20'] .


@Commonsensens endif et endforeach sont Syntaxes alternatives . Je ne le savais pas non plus .. mais : manque pour la syntaxe


3 Réponses :


0
votes

Vous devriez essayer ceci: xxx


1 commentaires

Pourquoi devrais-je dire et puis quitter ()?



1
votes
/**
 * @return array()
 */
public function setAge($users) {
  if($users) {
    foreach($users as &$user) {
      $now = Carbon::now();
      $user->age = Carbon::createFromFormat('Y-m-d', $user->birth_date);
      $user->age = $now->diffInYears($user->age);
    }
  }
 return $users;
}

/**
 * @return array()
 */
public function groupByAge($users) {
   $ageGroups = ['less than 20', 'more than 20'];
   $ageGroup = [];
    foreach ($users as $u) { 
        switch($u->age) {
          case ($u->age < 20) :
             $ageGroup['less_then_20'] = 1;
          break;
         case($u->age >= 20) :
             $ageGroup['more_than_20'] = 1;
         break;
         default:
             $ageGroup['error'] = 'error';
         break;
     }
   }
   return $ageGroup;
 }           

  public function index() {
    $users = DB::table('users')->get;
    $users = $this->setAge($users);
    $users = $this->groupByAge($users);

    print_r("<pre>");
    print_r($users);
    print_r("</pre>");die();

    return view('/users/',['users'=> $users]);
 }

2 commentaires

Vous voyez GroupByage ($ utilisateurs) Cette méthode TRAY variable` $ GROUPS `N'utilisez pas dans la variable de table de basculement. et dans ce code trop d'erreur résolue.


Pourquoi changer +1 comme uniquement 1 dans $ eurotgroup [a_key] = , le résultat ne sera que 1 même s'il y a plus d'une personne Dans la catégorie d'âge concernée



1
votes

Carbon fournit une méthode pour calculer directement l'âge. Ainsi, en supposant que $ naissance_date est déjà lancé sur une instance de carbone, il est possible d'appeler Âge à ce sujet.

Je ne suis pas sûr de ne pas compter les utilisateurs dans certains groupes d'âge ou si vous souhaitez les regrouper. Comme le titre indique de grouper les utilisateurs en groupes d'âge, vous pouvez procéder comme suit: xxx


1 commentaires

Je pense que continuer à utiliser le carbone pour les 2 fonctions est la meilleure réponse