Logica de programação, array e laços
Prezados, boa noite!
Preciso de uma ajuda estou recebendo uma consulta em um array e está quase tudo mastigado na própria consulta do banco, porém tenho que trabalhar no php e fazer uma alteração que não estou conseguindo que é formatar uma saída padrão um array onde cada bloco desse seria um array com a principal coluna "mesano". Estou usando ZF1(zend framework 1) e não consigo usar class teria que fazer um helper mais não entendo bem estou tentando usar no braço usando laços (for, foreach, while, if-else, etc... rs)
Segue abaixo a saída da minha consulta (31 registros):
O Array da consulta listada acima fica conforme informação abaixo:
* Não coloquei todos foi só para ilustrar minha saída real (abaixo ficou com os dados de maio, abril (2018) e final dezembro(2017) seria o ultimo registro posição do array [31]**)
["data"] => array(6) {
[0] => array(5) {
["mes"] => string(1) "5"
["ano"] => string(4) "2018"
["mesano"] => string(6) "5/2018"
["entregue_sem_confirmacao"] => string(1) "8"
}
[1] => array(5) {
["mes"] => string(1) "5"
["ano"] => string(4) "2018"
["mesano"] => string(6) "5/2018"
["entregue_com_confirmacao"] => string(1) "1"
}
[2] => array(5) {
["mes"] => string(1) "4"
["ano"] => string(4) "2018"
["mesano"] => string(6) "4/2018"
["bloqueada"] => string(1) "2"
}
[3] => array(5) {
["mes"] => string(1) "4"
["ano"] => string(4) "2018"
["mesano"] => string(6) "4/2018"
["cancelada"] => string(2) "12"
}
[4] => array(10) {
["mes"] => string(1) "4"
["ano"] => string(4) "2018"
["mesano"] => string(6) "4/2018"
["nao_recebida"] => string(3) "207"
}
[5] => array(5) {
["mes"] => string(1) "4"
["ano"] => string(4) "2018"
["mesano"] => string(6) "4/2018"
["entregue_sem_confirmacao"] => string(3) "552"
}
[6] => array(5) {
["mes"] => string(1) "5"
["ano"] => string(4) "2018"
["mesano"] => string(6) "4/2018"
["entregue_com_confirmacao"] => string(4) "1146"
}
[7] => array(10) {
["mes"] => string(1) "5"
["ano"] => string(4) "2018"
["mesano"] => string(6) "4/2018"
["entregue_para_operadora"] => string(1) "3"
}
.................
.................
.................
[31] => array(5) {
["mes"] => string(2) "12"
["ano"] => string(4) "2017"
["mesano"] => string(7) "12/2017"
["bloqueada"] => string(1) "1"
}
}
Vendo a situação acima da imagem que é o resultado da consulta e a impressão com var_dump montado o array eu tenho que agrupar as informações pela coluna "**mesano**" que é uma concatenação da coluna "**mês**" com "**ano**".
**Vamos as considerações: **
******* No resultado dessa consulta vista acima eu preciso montar uma **saida **em um **array**, onde deva conter todos os **status (7 status) (**mesmo não aparecendo todos caso não tenha o status ele deve existir e ir com valor padrão "zero") e **qtd** agrupados por "**mesano**", segue abaixo todos **os status possíveis** e mais** as informações adicionais que deve ter em cada bloco do array**.
______________________________________________
**Aguardando (status da consulta)**
**Bloqueada (status da consulta)**
**Não Recebida (status da consulta)**
**Enviado a operadora (status da consulta)**
**Entregue com confirmação (status da consulta)**
**Entregue sem confirmação (status da consulta)**
**Cancelada (status da consulta)**
**Total enviada** **(**vai ser uma posição do array nova **onde deve contabilizar** todas as** qtd **menos o que tiver **cancelada **caso exista**)**
**Mesano** (vai ser o dado base para montar cada array)
**opcoes (**vai entrar um link fixo mais informações da coluna referente ao bloco mes e ano ex: link **mes** / **ano)**
**_________________________________________________**
Olhando o resultado da consulta acima eu teria** 6 blocos de informações posição [0] a [5]**, sendo que conforme imagem e array acima a minha saida deverá conter **6 blocos de informações**(arrays)( **1 bloco(array)** 05/2018, **2 bloco(array) **04/2018, **3 bloco (array)** 03/2018, **4 bloco (array)** 02/2018 ,**5 bloco(array)** 01/2018 e **6 bloco(array)**12/2017) **preciso juntar as informações por blocos(array)**.
A saída que eu preciso é o array abaixo com **6 blocos(array) de saida** sendo assim cada um deles respectivo de cada **mes/ano**:
["data"] => array(6) {
[0] => array(10) {
["aguardando"] => string(1) "0"
["bloqueada"] => string(1) "0"
["enviado_operadora"] => string(1) "0"
["nao_recebida"] => string(1) "0"
["entregue_sem_confirmacao"] => string(1) "8"
["entregue_com_confirmacao"] => string(1) "1"
["cancelada"] => string(1) "0"
["total_enviado"] => string(1) "9"
["mes_ano"] => string(10) "**Mai / 2018**"
["opcoes"] => string(217) "<center><a href='/m/05/a/2018' title='Listar'</a></center>"
}
[1] => array(10) {
["aguardando"] => string(1) "0"
["bloqueada"] => string(1) "2"
["enviado_operadora"] => string(1) "3"
["nao_recebida"] => string(3) "207"
["entregue_sem_confirmacao"] => string(5) "1.146"
["entregue_com_confirmacao"] => string(3) "552"
["cancelada"] => string(2) "12"
["total_enviado"] => string(5) "1.910"
["mes_ano"] => string(10) "**Abr / 2018**"
["opcoes"] => string(217) "<center><a href='/m/04/a/2018' title='Listar'</a></center>"
}
[2] => array(10) {
["aguardando"] => string(1) "1"
["bloqueada"] => string(1) "9"
["enviado_operadora"] => string(1) "2"
["nao_recebida"] => string(1) "5"
["entregue_sem_confirmacao"] => string(2) "10"
["entregue_com_confirmacao"] => string(2) "85"
["cancelada"] => string(3) "418"
["total_enviado"] => string(3) "112"
["mes_ano"] => string(10) "**Mar / 2018"**
["opcoes"] => string(217) "<center><a href='/m/03/a/2018' title='Listar'</a></center>"
}
[3] => array(10) {
["aguardando"] => string(1) "8"
["bloqueada"] => string(1) "2"
["enviado_operadora"] => string(1) "0"
["nao_recebida"] => string(1) "3"
["entregue_sem_confirmacao"] => string(2) "15"
["entregue_com_confirmacao"] => string(1) "9"
["cancelada"] => string(1) "1"
["total_enviado"] => string(2) "37"
["mes_ano"] => string(10) "**Fev / 2018**"
["opcoes"] => string(217) "<center><a href='/m/02/a/2018' title='Listar'</a></center>"
}
[4] => array(10) {
["aguardando"] => string(1) "0"
["bloqueada"] => string(2) "10"
["enviado_operadora"] => string(1) "1"
["nao_recebida"] => string(1) "4"
["entregue_sem_confirmacao"] => string(2) "15"
["entregue_com_confirmacao"] => string(2) "42"
["cancelada"] => string(1) "0"
["total_enviado"] => string(2) "72"
["mes_ano"] => string(10) "**Jan / 2018**"
["opcoes"] => string(217) "<center><a href='/m/01/a/2018' title='Listar'</a></center>"
}
[5] => array(10) {
["aguardando"] => string(1) "0"
["bloqueada"] => string(1) "1"
["enviado_operadora"] => string(1) "2"
["nao_recebida"] => string(1) "4"
["entregue_sem_confirmacao"] => string(1) "3"
["entregue_com_confirmacao"] => string(2) "25"
["cancelada"] => string(1) "0"
["total_enviado"] => string(2) "35"
["mes_ano"] => string(10) "**Dez / 2017**"
["opcoes"] => string(217) "<center><a href='/m/12/a/2017' title='Listar'</a></center>"
}
}
/applications/core/interface/imageproxy/imageproxy.php?img=&key=28afbb360db5c1b91c7f9cf48ddca8db0e348b5a600473bceae10c41869c0945" alt="" />
Obrigado pela compreensão e leitura!
Discussão (3)
Carregando comentários...