2016-09-14 112 views
-1

我正在處理一個自定義的Single消除括號,它必須自動檢查結果並根據結果創建一個回合。我可以成功地檢查結果,並保存在陣列球隊下一輪,但我的問題是,它創建了一個怪陣:PHP如何合併數組和創建密鑰?

foreach ($competitors as $competitor) { 
        $teams = array(); 

        if ($competitor['scoreHome'] > $competitor['scoreAway']) { 
         $teams = array(array('home'=>$competitor['home'])); 
        } 

        if ($competitor['scoreHome'] < $competitor['scoreAway']) { 
         $teams = array(array('away'=>$competitor['away'])); 
        } 
    }    
        print_r($teams); 

OUTPUT:

Array 
    (
     [0] => Array 
     (
      [away] => testis5 
     ) 

    ) 
    Array 
    (
     [0] => Array 
     (
      [home] => wdefgr 
     ) 

    ) 
    Array 
    (
     [0] => Array 
     (
      [away] => testis4 
     ) 

    ) 
    Array 
    (
     [0] => Array 
     (
      [home] => team1 
     ) 

    ) 

我需要的是重新索引這個陣列並製作array_chunk($teams, 2),這樣我就可以將信息保存到數據庫中,並再次進行這個過程,直到整個比賽被覆蓋。

輸出,我想:

Array 
    (
    [0] => Array 
     (
      [0] => Array 
       (
        [teamName] => testis1 
       ) 

      [1] => Array 
       (
        [teamName] => testis5 
       ) 

      ) 

    [1] => Array 
    (
     [0] => Array 
      (
       [teamName] => wdefgr 
      ) 

     [1] => Array 
      (
       [teamName] => testis2 
      ) 

    ) 

我怎麼能這樣做?

+0

你能精確顯示您想要的輸出是什麼樣子? –

+0

是的,我只是編輯了這個問題 – janip

+0

關係呢?你檢查'>'和'<',但是會留下'='。 –

回答

0

我相信,你正在嘗試做的是這樣的:

$teams = array(); 
foreach ($competitors as $competitor) { 

    $match = array(); 
    /* fill this match with the info you want, eg. */ 
    $match[] = array(array('home'=>$competitor['home'])); 
    $match[] = array(array('away'=>$competitor['away'])); 

    $team[] = $match; 
}    
print_r($teams); 

我省略了內部條件語句,因爲他們是不相關的答案,但你必須做你必須要填寫這些內部信息。

+0

謝謝我更新它,它的作品lika魅力:) – janip

0

(代表OP發佈解決方案)。

我用Octopus的答案玩了一會兒(看下面的評論),並調整了代碼,使其完美運行。在章魚的答案的例子表明一個指標太多,所以我想出了這個:

foreach ($competitors as $competitor) { 

     if ($competitor['scoreHome'] > $competitor['scoreAway']) { 
      $match[] = array('home'=>$competitor['home']); 
     } 

     if ($competitor['scoreHome'] < $competitor['scoreAway']) { 
      $match[] = array('away'=>$competitor['away']); 
     } 
    } 

    $matches = array_chunk($match, 2); 
    print_r($matches); 

說明:

我剛剛擺脫了數組的聲明,因此它被視爲一個匹配添加array_chunk它。

輸出:

Array 
    (
     [0] => Array 
      (
       [0] => Array 
        (
         [away] => testis5 
        ) 

       [1] => Array 
        (
         [home] => wdefgr 
        ) 

     ) 

     [1] => Array 
      (
       [0] => Array 
        (
         [away] => testis4 
        ) 

       [1] => Array 
        (
         [home] => team1 
        ) 

      ) 

    )