2017-10-13 5 views
-2

Comment puis-je obtenir la valeur dans la boucle foreach ? Je suis coincé dans le code. Pour faire court, voici mon code:Comment puis-je afficher la valeur de boucle foreach

$students = $this->db->table('sys_user') 
    ->select(['*']) 
    ->leftjoin('sys_user_student', 'sys_user_student.user_id', '=', 'sys_user.user_id') 
    ->leftjoin('sys_mf_section', 'sys_mf_section.section_id', '=', 
       'sys_user_student.section_id') 
    ->leftjoin('sys_mf_grade', 'sys_mf_grade.grade_id', '=', 'sys_mf_section.grade_id') 
    ->where('sys_user.user_type_id', '4') 
    ->where('sys_mf_section.section_id', $request->getParam('section_id')) 
    ->where('sys_mf_grade.grade_id', $request->getParam('grade_id')) 
    ->get()->toArray();  

    $result = array(); 
    foreach ($students as $key => $value) { 
     $user_id = $value->user_id; 

     $logs = $this->db->table('sys_user') 
     ->where('user_id', $user_id) 
     ->get()->toArray(); 

     $result[] = $logs; 
    } 

est ici le fichier view. Soit dit en passant, im en utilisant twig comme moteur de modèle

  <tbody> 
      {% for student in students %} 
      <tr> 
       <td class="t-center">{{ student.identification_number }}</td> 
       <td class="t-center">{{ student.last_name }}, {{ student.first_name }}</td> 
       <td class="t-center">{{ student.gender }}</td> 
       {% for results in result %} 
        <td class="t-center">{{ results.tapped_time | date('h:i:s A') }}</td> 
       {% endfor %} 
      </tr> 
      {% endfor %} 
      {% if students is empty %} 
      <tr> 
       <td colspan="4">No Data</td> 
      </tr> 
      {% endif %} 
     </tbody> 
+3

Avez-vous essayé d'imprimer_r ou var_dump? – tiacocstoe

+0

oui je vider, et il a une valeur, mais quand je l'ai mis à la vue, il me donne nulle – Tallgeese

+2

le mettre à la vue? Qu'est-ce que ça veut dire? Vous allez avoir besoin de montrer plus de code – Steve

Répondre

-1

Vous (suite) avez tableau de tableau, quelque chose comme [[ 'name' => valeur, 'nom2' => valeur2], [ 'name' => valeur, 'nom2' => valeur2]] Vous devez donc utiliser 2 foreach boucles pour voir les résultats

foreach ($results as $index=>$array){ 
foreach ($array as $k=>$v){ 
    echo $k." = ".$v."<br>"; 
} 
} 

Deuxième réponse (correcte):

foreach ($students as $key => $value) { 
     $user_id = $value->user_id; 

     $logs = $this->db->table('sys_user') 
     ->where('user_id', $user_id) 
     ->get()->toArray(); 
     foreach ($logs as $l){ 
      $result[] = $l; 
      } 
    } 

Pensez à faire ça li ke ceci dans une autre étape:

foreach ($logs as $l){ 
       $result[$user_id][] = $l; 
       } 
+0

S'il vous plaît lire cette réponse c'est correct – tiacocstoe

+0

{% pour les résultats en résultat%} {% pour results123 dans les résultats%} {{results123 .tapped_time | date ('h: i: s A')}} {% endfor%} {% endfor%} – tiacocstoe

+0

évidemment le meilleur moyen serait de modifier php avec array_merge, et une chose logique est tjhat Vous obtenez tous les résultats , mais vous devriez les obtenir par un identifiant d'utilisateur – tiacocstoe