Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
Opa bom dia IGU.
Eu tenho minha consulta o qual tem os 32 registros correto , ate ai blz.
No meu model eu trabalho com ZF1 com MVC, eu tenho a consulta condensada e chamo ela no meu Controller.
Dando um var dump nela tenho aqueles dados conforme array de 31 posições = 32 registros (pois a posição "zero" conta tb) ate ai blz também.
Agora que vem o problema tenho que montar aquela saída dos 6 blocos(arrays) de saida exatamente no formato passado. Esses dados que eu puxo sempre tera 6 meses atuais, na minha consulta do banco ele ja identifica o mes atual e decrementa mais 5 meses totalizando sempre 6 meses, então independente minha saída sempre será nesse padrão independente de quantos registros tenha minha consulta nessa especifica veio (32 registros) para meu usuário, isso varia de sauriose para usurário, pois é a movimentação da conta, então tenho que pegar esses dados e agrupados de maneira que fique tudo na mesma forma conforme acima citado.
Tem que ficar assim e isso é padrão para todos os usuários, sempre vai ter 6 blocos(arrays) onde agrupa status e quantidade por 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>" }}
>
4 horas atrás, igu disse:
Eai Diego
pelo o que eu entendi, você quer efetuar a pesquisa no seu banco de dados e informar no php?
Opa boa tarde!
Não. Eu já tenho a consulta e já listei ela no php através de um array de 32 posições.
Agora tenho que trabalhar em cima desse array de 32 posições para formar um array final de 6 posições, que são elas agrupadas por mes/ano.
>
9 horas atrás, diego.baiao disse:
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:
Eai Diego
pelo o que eu entendi, você quer efetuar a pesquisa no seu banco de dados e informar no php?