如果为空,则使用先前的结果在 Foreach 中进行空计数

迈克·克罗

下面是在 PHP 中执行的两个 MySql 查询。

乍一看,他们实现了我想要的。它将计算团队中有多少用户,然后计算位置出现的频率,然后将它们分组,只返回最高计数供我用作变量 $flagcount。

但是,如果没有用户,因此也没有位置,它将返回前一个循环的结果。当我在 PhpMyAdmin 中运行查询时,它不返回任何结果/空集。

我试过 NULLIF (如你所见,以及 location !='' 你也可以看到。无论出于何种原因,如果它的 Empty/Null 它将使用之前的循环位置计数作为结果。

 /** other table select --working loop-- */
 /** irrelevant code here  */

  foreach( $rows as $result ) {

    $result = $conn->prepare("SELECT location, COUNT(NULLIF(TRIM(location), '')) as flagnum FROM users WHERE team_name='$teamname' AND location !='' GROUP BY location ORDER BY flagnum DESC LIMIT 1");
    $result->execute();
    $rows = $result->fetchAll();
    foreach( $rows as $result ):
    $flagmajority = $result['location'];
    $flagcount = $result['flagnum'];
    endforeach;

    $result = $conn->prepare("SELECT team_name, COUNT(NULLIF(TRIM(team_name), '')) as playnum FROM users WHERE team_name='$teamname' AND team_name !='' GROUP BY team_name ORDER BY playnum DESC LIMIT 1");
    $result->execute();
    $rows = $result->fetchAll();
    foreach( $rows as $result ):
    $playercount = $result['playnum'];
    endforeach;


    $flagpercent = ($flagcount/$playercount) * 100;
    $roundedpercent = round($flagpercent);

    echo $flagcount;

}
鲍曼

尝试在循环内初始化 $flagcount。

像这样:

foreach( $rows as $result ) {

    $flagcount = 0;
    ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章