2016-09-14 114 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 
        ) 

      ) 

    )