2012-10-11 25 views
0

比方說,我有這樣的循環在我的header.php:如何將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'); ?> 
       <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 
-------------------------------- 
... 

但我想,而不是while循環一樣

內迴盪
<?php echo $matches->field('winner_team'); ?> 

創建一個新的數組,即$ matches_array它將包含2列如id_newwinner_team_new並保存在winner_team的值winner_team_new,而不是直接呼應它while循環中。

然後,我想循環這個新創建的數組$ matches_array在另一個while循環中group_出現的winner_team_new和orderby他們的DESC。

所以,我會得到這樣的事情:

8 
3 
18 

什麼,而不是我用的,當目前得到迴響在while循環:

3 
8 
18 
8 

爲什麼我不能只是做內部的sql?我需要使用另一個不使用$ params或sql array中的條件的數組來完成,因爲這個bug:https://github.com/pods-framework/pods/issues/595以及pods框架對於我自己將代碼調整到核心過於複雜的事實,所以我想繞過這個使用while循環創建的數組。

所以,我需要的是創建一個數組並重新排列基於wonders_team出現次數從最多到最少的結果。

我一直在使用

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

然後循環它while循環嘗試,但它是不工作的。

我需要幫助計數陣列/組的部分。

我幾乎不知道有關它的任何事情。

我只是猜想,我需要在分組後根據相同的winner_team字段創建一個新的字段,例如, 獲勝其中每個團隊的出現次數(基於winner_team)值將被存儲。然後訂購新的陣列DESC。

Btw。表中的所有列都是整數

編輯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之前對結果進行排序。

任何意見如何做到這一點?

+0

我試圖此$ PARAMS =陣列( '選擇'=> 'winner_team,計數(ID)爲勝', '的OrderBy'=> '勝DESC', 'GROUPBY'=> 'winner_team', 'limit'=> 20 );但是Pods有一個問題,所以它不起作用。因此,我想繞過它使用數組,然後while循環分組和排序數組(如果它有可能與數組本身)再次 – Derfder

+0

不太確定你想要放入你創建的數組。它是* $ matches-> field('team_1.name')*和* $ matches-> field('team_2.name')*的內容還是什麼? – inquam

+0

@Derfder:這與實際問題沒有任何關係。你試圖自己解決問題的是什麼? – Jon

回答

2

應該解決最初讓您無法通過別名列進行排序的問題。我已經用最初的場景測試過它,它正在做它應該做的。我認爲你可以愉快地放棄這種嘗試的解決方法。

相關問題