如何将while循环中获取的行保存到新数组中?

时间:2012-10-11 08:05:24

标签: php podscms

假设我在header.php中有这个循环:

<div id="top-20">
    <h2 class="top-20-title">TOP 20 TEAMS</h2>

    <div class="top-20-content">

        <?php
            $params = array(
               'limit'   => -1 // get everything
            );

            $matches = pods( 'matches', $params );

            if ( 0 < $matches->total() ) {
                while ( $matches->fetch() ) {
            ?>

                 <?php echo $matches->field( 'winner_team' ); ?>
                 <br>

            <?php
                    } // end of while loop
                } // end of if any exists
            ?>

    </div><!-- /top-20-content -->  
</div><!-- /top-20 -->  

这就是我的简化表格:

id | team_1 | team_2 | winner_team
--------------------------------
1  | 3      | 15     | 3
--------------------------------
2  | 20     | 8      | 8
--------------------------------
3  | 18     | 11     | 18
--------------------------------
4  | 8      | 7      | 8
--------------------------------
...

但是我想要而不是像

那样在循环中回声
<?php echo $matches->field( 'winner_team' ); ?>

创建一个新数组,即 $ matches_array ,其中包含2列,如 id_new winner_team_new ,并保存 winner_team <的值/ strong>在 winner_team_new 中,而不是在循环内直接回显它。

然后我想在groupby出现的winner_team_new和orderby他们的DESC之后将这个新创建的数组$ matches_array循环到另一个while循环中。

所以,我会得到这样的东西:

8
3
18

而不是我在while循环中使用echo时当前获得的内容:

3
8
18
8

为什么我不能在sql中执行此操作?由于这个错误,我需要使用另一个不使用$ params或sql数组中的条件的数组来完成:https://github.com/pods-framework/pods/issues/595以及pods框架太复杂,以至于我无法将自己的代码调整到核心,所以我想通过使用将从while循环创建的数组来绕过它。

所以,我需要的是创建一个数组并根据wins_team的出现次数重新排列结果。

我尝试过使用

$matches_array = array_count_values(array_map($matches,array_keys($new_row)));

然后在while循环中循环它,但它根本不起作用。

我需要帮助计数数组/分组。

我几乎不知道任何事情。

我猜我需要在基于相同的 winner_team 字段进行分组后创建一个新字段,例如获胜,其中将存储每个团队的出现次数(基于winner_team)值。然后命令新的数组DESC。

顺便说一下。表中的所有列都是INTEGERS

编辑2: 我已经想出如何在一个名为$ matches_array的新数组中存储来自while循环的值,代码如下所示:

<div id="top-20">
    <h2 class="top-20-title">TOP 20 TEAMS</h2>

    <div class="top-20-content">

        <?php
            $params = array(
               'limit'   => -1 // get everything
            );

            $matches = pods( 'matches', $params );

            if ( 0 < $matches->total() ) {
                while ( $matches->fetch() ) {
            ?>

                 <?php // echo $matches->field( 'winner_team' ); ?>
                      <?php $row_array = $matches->field( 'winner_team' ); ?>
                      <?php $matches_array[]; ?>

                 <br>

            <?php
                    } // end of while loop
                } // end of if any exists
            ?>

    </div><!-- /top-20-content -->  
</div><!-- /top-20 -->

现在,我需要在groupby之后执行foreach循环(基于wins_team字段中的数字的出现)并在输出DESC之前对结果进行排序。

有任何建议怎么做?

1 个答案:

答案 0 :(得分:2)

应该解决最初使您无法按别名列排序的问题。我已经用初始场景对它进行了测试,它正在做它应该做的事情。我想你可以高兴地放弃这种尝试的解决方法。