Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环中的PHP循环_Php_Sql_Oop_Codeigniter_Activerecord - Fatal编程技术网

循环中的PHP循环

循环中的PHP循环,php,sql,oop,codeigniter,activerecord,Php,Sql,Oop,Codeigniter,Activerecord,在我的数据库中,我有一个星期表和一个训练表。我希望实现以下目标: 第一周 训练1标题 训练1内容 训练2标题 训练2内容 训练3。。。。。。 第2周 训练1标题 训练1内容 训练2标题 训练2内容 训练3。。。。。。 第三周。。。。。 我试过这样的方法: function get_weekly_content() { $user_id = $this->session->userdata('id'); $weeks = $this->db-&

在我的数据库中,我有一个星期表和一个训练表。我希望实现以下目标:

第一周 训练1标题 训练1内容 训练2标题 训练2内容 训练3。。。。。。 第2周 训练1标题 训练1内容 训练2标题 训练2内容 训练3。。。。。。 第三周。。。。。 我试过这样的方法:

function get_weekly_content() {

        $user_id = $this->session->userdata('id');

        $weeks = $this->db->select('week_no')->where('user_id', $user_id)->get('weeks');

        if($weeks->num_rows > 0) {
            foreach($weeks->result() as $row) {
                $week_no = $row->week_no;

                $workouts = $this->db->where('user_id', $user_id)->where('week_no', $week_no)->get('workouts');

                if($workouts->num_rows > 0) {
                    foreach($workouts as $workout) {
                        $workout_data[] = $workout;
                    }
                }


                $weekly_data[] = $workout_data;

            }
            return $weekly_data;
        }
    }
但也许我有错误的想法。然后我还需要显示数据

编辑我的问题是,实现上述功能并在视图页面上循环获取和数组/对象的最佳方法是什么


谢谢

在循环中使用循环是很好的,而且您的方法是合适的。然而

一般来说,如果有任何方法可以避免的话,就不应该在循环中运行mysql查询,因为查询速度非常慢,这会降低脚本的性能。否则,这个想法是正确的。尝试在循环之外编写一个查询,将所有相关的用户数据放入一个键控数组,然后在循环时从数组中提取信息

您将看到这一行的问题:$weekly_data[]=$workout_data;如果$workouts->num_rows>0。。。如果是第一个循环,它将抛出一个错误,因为$COUNT_数据不会被设置,如果是后续循环,则在没有结果的任何一周,它将显示前一周的数据。您可以通过在内部循环的顶部设置/重置$COUNT_数据来解决此问题:


在循环中使用循环是很好的,并且您的方法是合适的。然而

一般来说,如果有任何方法可以避免的话,就不应该在循环中运行mysql查询,因为查询速度非常慢,这会降低脚本的性能。否则,这个想法是正确的。尝试在循环之外编写一个查询,将所有相关的用户数据放入一个键控数组,然后在循环时从数组中提取信息

您将看到这一行的问题:$weekly_data[]=$workout_data;如果$workouts->num_rows>0。。。如果是第一个循环,它将抛出一个错误,因为$COUNT_数据不会被设置,如果是后续循环,则在没有结果的任何一周,它将显示前一周的数据。您可以通过在内部循环的顶部设置/重置$COUNT_数据来解决此问题:

然后访问数据:

$weekly_data = get_weekly_content();

foreach( $weekly_data as $week_no => $workout_data){
  // do something with it.
}
也就是说,我同意@Ben D,您应该考虑一下您的查询并创建一个可以同时返回所有结果的查询

然后访问数据:

$weekly_data = get_weekly_content();

foreach( $weekly_data as $week_no => $workout_data){
  // do something with it.
}

也就是说,我同意@Ben D,您应该考虑一下您的查询并创建一个可以同时返回所有结果的查询。

您是否初始化了$workout\u data您是否初始化了$workout\u data您如何执行此操作?我同意一个问题是理想的你怎么能这样做?我同意一个问题是理想的
$weekly_data = get_weekly_content();

foreach( $weekly_data as $week_no => $workout_data){
  // do something with it.
}