PHP如何合并数组和创建键?

PHP如何合并数组和创建键?,php,arrays,Php,Arrays,我正在做一个自定义的单消括号,它必须自动检查结果,并根据结果创建一轮。我可以成功地检查结果并将团队保存在阵列中以供下一轮使用,但我的问题是它创建了一个奇怪的阵列: foreach ($competitors as $competitor) { $teams = array(); if ($competitor['scoreHome'] > $competitor['scoreAway']) {

我正在做一个自定义的单消括号,它必须自动检查结果,并根据结果创建一轮。我可以成功地检查结果并将团队保存在阵列中以供下一轮使用,但我的问题是它创建了一个奇怪的阵列:

    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);
我需要的是重新编制这个数组的索引,并生成
array\u chunk($teams,2)
,这样我就可以将信息保存到数据库中,并再次执行此过程,直到整个比赛结束

我想要的输出:

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

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

            )

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

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

    )

我该怎么做呢?

我相信你想做的事情是这样的:

$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);
我省略了内部条件,因为它们与答案无关,但你必须做你必须做的事情来填写内部信息。

(代表OP发布解决方案)

我对八达通的答案做了更多的修改(请看下面的评论),并对代码进行了调整,使其能够完美工作。八达通回答中的示例显示一个索引太多,因此我提出以下建议:

    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);

你能准确地展示你的预期输出是什么样子吗?是的,我刚刚编辑了这个问题,领带呢?您选中
,并且
您的
$teams
值在每次迭代时都会被覆盖。不,在本次锦标赛中,平局不是选项
    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
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [away] => testis5
                    )

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

        )

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

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

            )

    )