我怎样才能重新组织php数组运动

时间:2016-08-26 17:04:15

标签: php sql-server foreach

我正在尝试列出体育联盟的校内活动。我目前的php foreach吐出了所有的联赛和产品。大。

all IM offerings

现在我想只显示1项运动(课程),例如“篮球”,然后在列中列出多个联赛产品(提供)。

我不能再做一个循环了 如果$ nt ['course'] ==“篮球”因为这些会改变

enter image description here

不确定我的mssql查询是否需要更改,或者我是否可以使用另一个foreach循环?

查询

$sql2 = SELECT category
,course 
,offering
,Semester
,spots
,registerLink from dbtable WHERE semester like "%Fall 2016%" and category like "%Leagues%" ORDER BY course

$rs= mssql_query ($sql2, $con)
or die("Error!");

$result = array();
if (mssql_num_rows($rs)) {
    while ($row = mssql_fetch_assoc($rs)) {
        $result[] = $row;
    }
}
return $result;
exit();

我的foreach循环视图:

<?php 
foreach ($data as $nt) {
echo "<div class='col-md-2'>";
echo "<h2><a href='#'>".$nt['course']."</a></h2>";
echo "<h3>".$nt['offering']."</h3>";
echo "<h4>".$nt['Semester']."</h4>";
echo "<p>".$nt['spots']."</p>";
echo "<button>".$nt['registerLink']."</button>";
echo "</div>";
}

所以只是为了澄清: category =“Leagues”在我的查询中 球场=篮球和国旗足球等

2 个答案:

答案 0 :(得分:1)

这很简单: -

而不是

$result[] = $row;

$result[ $row['course']][] = $row;

答案 1 :(得分:0)

简单的解决方案:

$result = array();
if (mssql_num_rows($rs)) {
    while ($row = mssql_fetch_assoc($rs)) {
        if(!in_array($row["course"], $result))
        {
          array_push($result, $row["course"]);
        }
        array_push($result[$row["course"]], $row);
    }
}
return $result;

在视图中循环:

foreach($data as $key => $value)
{
  echo "<h1>".$key."</h1>";
  foreach($value as $nt)
  {
    echo "<div class='col-md-2'>";
    echo "<h3>".$nt['offering']."</h3>";
    echo "<h4>".$nt['Semester']."</h4>";
    echo "<p>".$nt['spots']."</p>";
    echo "<button>".$nt['registerLink']."</button>";
    echo "</div>";
  }
}