具有特定属性条件的Foreach?

时间:2014-11-12 00:47:20

标签: php html loops foreach indexing

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

我遇到了第二个foreach的问题,因为我需要一个循环来生成作者的名字,然后再转到标题。查询将使结果很好:

PID作者TITLE

1 NAME1 TITLE1

1 NAME2 TITLE1

1 NAME3 TITLE1

2 NAME1 TITLE2

2 NAME2 TITLE2

2 NAME3 TITLE2

等等

我希望最终结果是:

1 NAME1,NAME2,NAME3 TITLE1

2 NAME1,NAME2,NAME3 TITLE2

这是我的代码:

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

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

    echo $row->TITLE;
    echo "<br>" . "<br>";
  }

2 个答案:

答案 0 :(得分:0)

您在两个查询中都使用了$ query-&gt; result(),试试这个

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

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

   echo $row->TITLE</span>;
   echo "<br>" . "<br>";
}

答案 1 :(得分:0)

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

SELECT PID,GROUP_CONCAT(DISTINCT Authors SEPARATOR&#39;,&#39;),TITLE1 FROM FROM GROUP BY PID;