[英]PHP - Creating Multidimensional Array in Foreach
我有以下函數循環遍歷一系列實體以創建多維數組以返回 JSON:
public function calcularIndicadorBenchmark(int $idIndicador): array
{
$indicador = $this->buscarPorId($idIndicador);
$configGrupoBase = $this->entityManager->getRepository(ConfigGrupoBase::class)->findByIndicador($idIndicador);
$configGrupo = $this->entityManager->getRepository(ConfigGrupo::class)->findByConfigBase(end($configGrupoBase)->getId());
foreach ($configGrupo as $c) {
$arrayGrupos[] = [
'id' => $c->getId(),
'nome' => $c->getNome(),
'agrupamentos' => null
];
$configGrupoAtributo = $this->entityManager->getRepository(ConfigGrupoAtributo::class)->findByConfigGrupo($c->getId());
$agrupamento = $this->entityManager->getRepository(Agrupamento::class)->findByAtributo(end($configGrupoAtributo)->getId());
foreach ($agrupamento as $a) {
$arrayAgrupamentos[] = [
'id' => $a->getId(),
'nome' => $a->getNome(),
'periodos' => null
];
}
$arrayGrupos[] = $arrayAgrupamentos;
}
$json['indicador'] = [
'id' => $indicador->getId(),
'nome' => $indicador->getNome(),
'codigo' => $indicador->getCodigo(),
'grupos' => $arrayGrupos
];
return $json;
}
我的代碼沒有返回任何錯誤,但這並不是我期望/需要的。 Agrupamentos需要接收它下面的數組,我試圖讓它工作但不能。
{
"indicador": {
"id": 20,
"nome": "Produtividade pessoal: Técnica",
"codigo": "IN014",
"grupos": [
{
"id": 1,
"nome": "Até/Acima 125 mil exames ao mês",
"agrupamentos": null
},
[
{
"id": 1,
"nome": "até 5 milhões por mês",
"periodos": null
},
{
"id": 2,
"nome": "Acima de 5 milhões por mês",
"periodos": null
}
],
{
"id": 99,
"nome": "Teste",
"agrupamentos": null
},
[
{
"id": 1,
"nome": "até 5 milhões por mês",
"periodos": null
},
{
"id": 2,
"nome": "Acima de 5 milhões por mês",
"periodos": null
}
]
]
}
}
為了確保,這是我需要返回的結果,假設數據相同:
{
"indicador":{
"id":20,
"nome":"Produtividade pessoal: Técnica",
"codigo":"IN014"
},
"grupos":[
{
"id":1,
"nome":"Até/Acima 125 mil exames ao mês",
"agrupamentos":[
{
"id":1,
"nome":"até 5 milhões por mês",
},
{
"id":2,
"nome":"Acima de 5 milhões por mês",
}
]
},
{
"id":99,
"nome":"Teste",
"agrupamentos":[
{
"id":1,
"nome":"até 5 milhões por mês",
"periodos":null
},
{
"id":2,
"nome":"Acima de 5 milhões por mês",
"periodos":null
}
]
}
]
}
提前致謝,對偶爾的英語錯誤表示抱歉。
你不在$grupo['agrupamentos'][]
推送數據,試試這個:
foreach ($configGrupo as $c) {
// Variable created, easiest to handle
$grupo = [
'id' => $c->getId(),
'nome' => $c->getNome(),
'agrupamentos' => [] // Init with empty array
];
//...
foreach ($agrupamento as $a) {
// Push each agrupamento to grupo agrupamentos
$grupo['agrupamentos'][] = [
'id' => $a->getId(),
'nome' => $a->getNome(),
'periodos' => null // Array too ?
];
}
$arrayGrupos[] = $grupo;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.