【问题标题】:php implode inside an arrayphp在数组中内爆
【发布时间】:2011-03-10 21:45:45
【问题描述】:

这里是代码

$result=mssql_query($query);

while($rows=mssql_fetch_array($result, MYSQL_NUM))
  {
  $subjectcode[] = "<tr><td>" . implode("</td><td>", $rows) . "</td></tr>";

  }

在我的查询中,我有 3 个字段,主题 1、等级和备注..

例如查询的结果是

数学 1.55 NULL

现在我想评估该字段(等级),以便我可以向内爆部分插入通过或失败..可能我想在 $subjectcode[] 之前的循环内使用 in 语句

【问题讨论】:

  • 对不起while语句是这样的----while($rows=mssql_fetch_array($result, MYSQL_NUM)) { $subjectcode[] = " " 。内爆(“ ”,$rows)。 " "; $计数器++; }

标签: php arrays loops implode


【解决方案1】:

如果您想保持成绩并添加另一列,您可以执行以下操作(超过 40 为通过)

$result=mssql_query($query);

while($rows=mssql_fetch_array($result, MYSQL_NUM))
{
    $rows[] = ($rows[1] > 40) ? "PASS" : "FAIL";
    $subjectcode[] = "<tr><td>" . implode("</td><td>", $rows) . "</td></tr>";
    $counter++;
}

【讨论】:

  • 是的,它是一个内联 if 语句。
  • ahm 如果 $rows[1] 是一个字符串,我如何将它转换为 int?
  • PHP 通常不会被打扰,但如果您想将其转换为 int,您可以对其进行类型转换。 $rows[] = ((int)$rows[1] > 40) ? “通过”:“失败”;
  • 如果 $rows[1] = "INC" 或 "incomplete" 会怎样
  • 如果在某些情况下我必须在超过 2 个条件下评估成绩怎么办
【解决方案2】:

假设 $rows[1] 是年级,而 1 年级不及格,则更高的成绩通过:

while(...) {
    if ($rows[1] > 1) {
        $rows[1] = "pass";
    } else {
        $rows[1] = "failed";
    }
    $subjectcode[] = "\n" . implode(" ", $rows) . "\n";
}

【讨论】:

  • 内爆部分应该像这样 $subjectcode[] = " " 。内爆(“ ”,$rows)。 " ";