Php Foreach是否具有特定属性的条件?

Php Foreach是否具有特定属性的条件?,php,html,loops,foreach,indexing,Php,Html,Loops,Foreach,Indexing,我有一个存储出版物的数据库: 出版物ID、作者(考虑优先级)和出版物标题 我在使用第二个foreach时遇到了问题,因为在转到标题之前,我需要一个循环来生成作者的姓名。查询将产生如下结果: PID作者标题 1名称1标题1 1名称2标题1 1名称3标题1 2名称1标题2 2名称2标题2 2名称3标题2 等等 我希望最终结果是: 1名称1、名称2、名称3标题1 2名称1、名称2、名称3标题2 这是我的密码: foreach ($query->result() as $row) {

我有一个存储出版物的数据库: 出版物ID、作者(考虑优先级)和出版物标题

我在使用第二个foreach时遇到了问题,因为在转到标题之前,我需要一个循环来生成作者的姓名。查询将产生如下结果:

PID作者标题

1名称1标题1

1名称2标题1

1名称3标题1

2名称1标题2

2名称2标题2

2名称3标题2

等等

我希望最终结果是:

1名称1、名称2、名称3标题1

2名称1、名称2、名称3标题2

这是我的密码:

foreach ($query->result() as $row)
  {
    echo $row->PID;
    echo ": ";

    foreach ($query->result() as $row)
      {
        echo $row->AUTHORS;
        echo ", ";
      }

    echo $row->TITLE;
    echo "<br>" . "<br>";
  }
foreach($query->result()作为$row)
{
echo$row->PID;
回声“;”;
foreach($query->result()作为$row)
{
echo$row->AUTHORS;
回声“,”;
}
echo$行->标题;
回声“

”; }
您在两个查询中都使用了$query->result(),请尝试以下操作

foreach ($query->result() as $row)
{
   echo $row->PID."</span>";
   echo ": ";

   echo implode(', ', $row->authors);

   echo $row->TITLE</span>;
   echo "<br>" . "<br>";
}
foreach($query->result()作为$row)
{
echo$行->PID。“;
回声“;”;
回声内爆(“,”,$row->authors);
echo$行->标题;
回声“

”; }
从数据库检索数据时,可以使用GROUP_CONCAT()函数,而不是使用两个for循环。例如,可以使用


按PID从表组中选择PID、GROUP_CONCAT(分隔符“,”)、标题1

为什么要做两个foreach循环?并且不回显$row->PID;打破它不应该是echo$row->PID。”;因为每个出版物都有多个作者。请参见我提供的示例。我需要第二个foreach来生成作者姓名,然后才能键入标题和下一个出版物的开头等等,这样我才知道我使用了相同的foreach,因为我不知道如何指定当前行。我不在我的桌面上,你的回答听起来很有逻辑,非常感谢。我一到家就试试。但是,根据我上面给出的示例,前3行具有相同的PID,并且仅标题位置(名称)不同。如何使第二个foreach只带来具有相同PID的名称?我建议您只需按PID从表顺序重新编码查询
select*,优先级
它不起作用,我认为我们仍然需要第二个循环来生成名称。我没有输入上面的示例(查询结果),这很混乱,请阅读,因为我刚刚修复了它。很抱歉。现在应该有道理了。如有任何建议,我将不胜感激。我如何回应作者的观点。我尝试了{echo$row->authors;},但它显示“未定义的属性:stdClass::$authors”。顺便说一句,这是一个非常有用的函数,非常感谢。更不用说只使用了GROUP_CONCAT(DISTINCT Authors SEPARATOR’,’)作为作者。这是有效的,再次谢谢你。我有没有办法在姓氏之前加上“和”而不是逗号“,”一路?很抱歉,你不能只在姓氏之前加上这样的内容。