如何用同一个键组合多个数组


How to combine multi - Arrays with the same key?

我有一个这样的数组。有一些数组具有相同的名称。比如1号拨款,2号拨款……他们有很多项目应该在同一个地方。例如:Grant 1应该包含属于Grant 1的信息。同样的事情也应该发生在Grant 2身上。等等

array:5 [▼
  0 => array:2 [▼
    0 => "Grant 1"
    1 => Project {#423 ▶}
  ]
  1 => array:2 [▼
    0 => "Grant 1"
    1 => Project {#421 ▶}
  ]
  2 => array:2 [▼
    0 => "Grant 2"
    1 => Project {#412 ▶}
  ]
  3 => array:2 [▼
    0 => "Grant 1"
    1 => Project {#424 ▶}
  ]
  4 => array:2 [▼
    0 => "Grant 2"
    1 => Project {#419 ▶}
  ]
]

我想将它们组合为:

array:5 [▼
  0 => array:2 [▼
    0 => "Grant 1"
    1 => Project {#423 ▶}
    2 => Project {#421 ▶}
    3 => Project {#424 ▶}
  ]
  1 => array:2 [▼
    0 => "Grant 1"        
    1 => Project {#412 ▶}
    2 => Project {#419 ▶}
  ]
]

请帮忙。谢谢,

我认为您可以使用foreach:

$newArray = [];
foreach ($array as $value) {
    $newArray[$value[0]][] = $value[1];
}

你有这样的数组:

array:5 [▼
  "Grant 1" => array:2 [▼
    1 => Project {#423 ▶}
    2 => Project {#421 ▶}
    3 => Project {#424 ▶}
  ]
  "Grant 2" => array:2 [▼ 
    1 => Project {#412 ▶}
    2 => Project {#419 ▶}
  ]
]

或者类似的东西(感谢@AbraCadaver):

$newArray = [];
foreach ($array as $value) {
    if (isset($newArray[$value[0]] {
        $newArray[$value[0]][] = $value[1];
    } else {
        $newArray[$value[0]] = $value;
    }
}

阵列您需要的:

array:5 [▼
    0 => array:2 [▼
        0 => "Grant 1"
        1 => Project {#423 ▶}
        2 => Project {#421 ▶}
        3 => Project {#424 ▶}
  ]
    1 => array:2 [▼
        0 => "Grant 1"        
        1 => Project {#412 ▶}
        2 => Project {#419 ▶}
  ]
]