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



假设我的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,该数组将包含两列,如id_newwinner_team_new并将winner_team的值保存在

winner_teal_new然后我想在另一个while循环中循环这个新创建的数组$matches_array,然后按winner_team_new的出现分组并按它们的DESC排序。

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

8
3
18

而不是我目前在while循环中使用echo时得到的:

3
8
18
8

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

所以,我需要的是创建一个数组,并根据winner_team的出现次数从多到少重新排列结果

我试过使用

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

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

我需要有关计数数组/按部件分组的帮助。

我实际上对此一无所知。

我只是想,在基于相同的winner_team字段进行分组后,我需要创建一个新字段,例如win,其中将存储每个团队的出现次数(基于winner_tteam)值。然后订购新数组DESC.

Btw。表中的所有列都是INTEGERS

编辑2:我已经知道如何将while循环中的值存储在一个名为$matches_array的新数组中,代码如下:

<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循环(基于winner_team字段中数字的出现),并在输出DESC.之前对结果进行排序

有什么建议吗?

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

最新更新