【问题标题】:How can I display the value inside foreach loop [duplicate]如何在 foreach 循环中显示值[重复]
【发布时间】:2017-10-13 18:05:15
【问题描述】:

如何获取 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;
    }

这是view 文件。顺便说一句,我使用twig 作为我的模板引擎

            <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>

【问题讨论】:

  • 你试过 print_r 或 var_dump 吗?
  • 是的,我把它转储了,它有价值,但是当我把它放到视图中时,它给了我 null
  • 把它放到视图中?这意味着什么?您将需要显示更多代码
  • 你有没有将学生数组传递给树枝模板?就像在 twig 示例中一样: echo $template->render(array('the' => 'variables', 'go' => 'here'));
  • @tiacocstoe,是的,我已经通过了树枝模板

标签: php foreach slim


【解决方案1】:

你(结果)有一个数组数组,比如 [['name'=>value, 'name2'=>value2], ['name'=>value, 'name2'=>value2]] 所以你必须使用 2 个 foreach 循环才能看到结果

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

第二个答案(正确):

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;
          }
    }

考虑在另一个步骤中使其成为这样:

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

【讨论】:

  • 请阅读这个答案是正确的
  • {% for results in result %} {% for results123 in results %} {{ results123 .tapped_time | date('h:i:s A') }} {% endfor %} {% endfor %}
  • 显然最好的方法是用array_merge修改php,一个合乎逻辑的事情是你得到了所有的结果,但你应该通过用户ID来获取它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2016-07-25
相关资源
最近更新 更多