本文介绍了PHP分组和循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将如何按技能将其分组并针对每种技能回显所有照片.

How would I group this by skill and echo all the photo's for each skill.

SELECT skills.teacher, skills.student, skills.skill, profile.photo
FROM skills
INNER JOIN profile ON skills.student = profile.username
WHERE teacher =  'teach1'

teacher | student  | skill  | photo
------- | -------- | ------ | ------------
teach1  | student1 | skill1 | student1.jpg
teach1  | student2 | skill1 | student2.jpg
teach1  | student3 | skill2 | student3.jpg
teach1  | student3 | skill1 | student3.jpg
teach1  | student4 | skill3 | student4.jpg
teach1  | student1 | skill2 | student1.jpg

我强调这是一个例子.我实际上不知道由学生创建的技能"的名称.我不知道总共会列出多少种技能.我不知道哪些用户会为哪些老师增加哪些技能.

I stress this is an example. I do not actually know the names of the "skill" as they are created by the students. I don't know how many skills will be listed in all. I don't know what users will add what skills to what teachers.

我尝试了while循环和foreach循环.我只是不知道如何将其分组以及使用哪种类型的循环...

I have tried while loops and foreach loops. I just can't figure out how to group this and what type of loop to use...

我需要最终结果以允许我回显.

I need my end result to allow me to echo.

<div>skill1
 <img src="student1.jpg">
 <img src="student2.jpg">
 <img src="student3.jpg">
 ...
 ...
 ...
</div>

<div>skill2
 <img src="student1.jpg">
 <img src="student3.jpg">
 ...
 ...
 ...
</div>

 <div>skill3
 <img src="student4.jpg">
 ...
 ...
 ...
</div>

推荐答案

首先,按技能排序,以便按顺序获取它们:

First off, order by skill, so that you get them in order:

SELECT skills.teacher, skills.student, skills.skill, profile.photo
FROM skills
INNER JOIN profile ON skills.student = profile.username
WHERE teacher =  'teach1'
ORDER BY skills.skill

在while循环之外分配一个变量(在本例中为$lastSkill).检查它是否已更改,并相应地输出内容.看下面的例子.您的PHP代码看起来类似于以下内容:

Assign a variable (In this case $lastSkill) outside of your while loop. Check if it's changed, and output things accordingly. Take a look at the example below. Your PHP code would look something similar to this:

$lastSkill = null;

while ( $row = fetchrow() )
{
    if ( $row['skill'] !== $lastSkill )
    {
        //Don't close a div, if it's the first row
        if ( $lastSkill !== null )
            echo '</div>';

        //We've moved onto a new row, echo it out
        echo '<div>' . $row['skill'];
        //Store the lastSkill
        $lastSkill = $row['skill'];
    }

    echo '<img src="' . $row['photo'] . '">';
}

这篇关于PHP分组和循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 15:43