假设我在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之前对结果进行排序。
有任何建议怎么做?
答案 0 :(得分:2)
应该解决最初使您无法按别名列排序的问题。我已经用初始场景对它进行了测试,它正在做它应该做的事情。我想你可以高兴地放弃这种尝试的解决方法。