Jump to content
eiwes

Erro na junção de array com foreach

Recommended Posts

Fiz uma iteração foreach para gerar categorias e subcategorias, pois não queria fazer DOIS SELECTS, ficando assim:

 

//----> Foreach para gerar a categoria, pois são vários items com as mesmas chaves, portanto agrupo
		foreach($exibeLista as $row){
            $dlD[$row["nameD"]][] = [
              "nameD"=>$row["nameD"],
              "idD"=>$row["idD"],
              "qtdR"=>$row["qtdR"],
              "qtdF"=>$row["qtdF"]
            ];
          }

//----> Foreach para gerar subcategorias
          foreach($exibeLista as $row){
            $dLA[$row["nameP"]][] = [
              "nameD"=>$row["nameD"],
              "idD"=>$row["idD"],
              "idAss"=>$row["idAss"],
              "idT"=>$row["idT"],
              "nameP"=>$row["nameP"],
              "qtdR"=>$row["qtdR"],
              "qtdF"=>$row["qtdF"]
            ];
          }


          $fsHTML = [];
          $rateD = 0;
          $qtdAss = 0;

          if(is_array($dlD) || is_object($dlD)){
            foreach ($dlD as $key => $ds) {

              if ($key <> '' && $key <> NULL) {
                $rateD += (($ds[0]["qtdR"]*100)/$ds[0]["qtdF"]);
                $qtdAss += count($dlD[$key]);
	
//----> Array para inserir HTML da Categoria criada e criar accordion
                    $fsHTML[] = '
                    <div class="col-md-12 col-sm-12 col-xs-12">
                      <div class="x_panel overflow_hidden padding-into-row-qsts bg-white-row filtro-on">
                        <span class="rateD">'.ceil($rateD/$qtdAss).'%</span>
                        <span class="opcao-into-top">'.$ds[0]["idD"].' - '.$ds[0]["nameD"].' 
                          <a class="collapse-link open-filter-qsts border-radius8"><i class="fa fa-chevron-up"></i></a></span>
                        <div class="x_content" style="display:none;padding-top:10px">
                          <div class="accordion" id="accordion" role="tablist" aria-multiselectable="true">
                    ';
                            
//----> Verificar se a subcategoria contém a categoria, se contém é incluída na array
                            
                foreach ($dLA as $keys => $ass) {
                  if($ass[0]["idD"] == $ds[0]["idD"] ){
                    if($ass[0]['idT'] <> 0){ $link = 't='.$ass[0]['idT']; }else{ $link = 'a='.$ass[0]['idAss'];}
                    $fsHTML[] = '
                    <div class="panel">
                      <a class="panel-heading collapsed" href="/v/fs/st?mz=y&type=c&'.$link.'">
                        <span class="eficiencia-accordion">'.ceil(($ass[0]['qtdR']*100)/$ass[0]['qtdF']).'%</span>
                        <h4 class="panel-title">'.$ass[0]['nameP'].'</h4>
                        <span class="unicamente">'.$ass[0]['qtdR'].' respondido de '.$ass[0]['qtdF'].'</span>
                      </a>
                    </div>
                    ';
                  }//if ass
                }//foreach ass
              }//if ds
                            
//----> Aqui é aonde ocorre o ERRO! Era pra fazer o fechamento do Accordion e gerar uma nova DIV. 
//No índice [0] isso ocorre normalmente, porém no [1] ela agrupa todos os accordions. (abaixo farei a amostra)
                            
                    $fsHTML[] = '</div></div></div></div>';
            }//foreach ds
          }//if verifica se é array e se é objeto
          
                  return implode('', array_unique($fsHTML));

O correto seria assim:

 

- Categoria

  - Subcategoria

  - Subcategoria

 

- Categoria

 - Subcategoria

 - Subcategoria

 

 

Como está acontecendo:

 

- Categoria

  - Subcategoria

  - Subcategoria

 

- Categoria

  - Subcategoria

  - Subcategoria

    - Categoria

      - Subcategoria

      - Subcategoria

        - Categoria

          - Subcategoria

          - Subcategoria

            - Categoria

              - Subcategoria

              - Subcategoria

 

 

Não consigo entender de jeito nenhum pq o primeiro fecha corretamente e a partir do segundo não.

Alguém me ajuda?

 

 

Share this post


Link to post
Share on other sites
4 horas atrás, Williams Duarte disse:

 

Então, Williams. Agradeço muito pelo link, porém, gostaria de entender o porquê desse erro.

 

Saberia me ajudar com isso? Pois estou encabulado tentando entender: no primeiro laço do array ele conclui com o fechamento e após ele não faz o fechamento.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By clovis.sardinha
      Estou tentando mandar e-mail para vários usuários, mas só vai para o primeiro, quando tento colocar para vários dá erro. Alguém pode sugerir como fazer?
       
      if ($this->form_validation->run() == true) {             $this->load->model('emailReplayModel');             $user=$this->emailReplayModel->emailreplay(); //$user tem os dados dos usuários que quero mandar -veja abaixo                                  foreach ($user as &$i){                                  $this->email->from("atendimento@portaldapermuta.com", 'Portal da Permuta');             $this->email->subject("Continue seu cadastramento no Portal - é facil");             $email=$i['email'];             $this->email->to($email);             $msg=$this->load->view('usuario/emailReplayFinal',array($senha,'senha' =>$i['senha'],$nome,'nome'=>$i['nome_interessado']),TRUE);             $this->email->message($msg);             $this->email->send();                                         }             $this->email->send();                      if($this->email->send())    {                                      $this->session->set_flashdata('success', 'Mensagens enviadas.');                 redirect('admin/painel/painel_adm');             }  
      debug do $user:
      [user] => Array ( [0] => Array ( [id_interessado] => 23595 [nome_interessado] => CLOVIS [senha] => xxxx [email] => clovis.sardinha@teste2.com [data_inscricao] => 2020-10-12 14:35:43 ) [1] => Array ( [id_interessado] => 23596 [nome_interessado] => ANDRADE [senha] => xxxxx [email] => clovis.sardinha@teste3.com [data_inscricao] => 2020-10-12 16:22:27 ) )  
    • By mamotinho
      Boa noite! estou com dúvidas em relação a array, eu tenho uma procedure no SQL Server e essa procedure exibe uma lista de resultados, eu gostaria de pega o valor desses resultados e lista em um array para eu comparar com outro valor que vai ser selecionado em um select , tipo abaixo:
       
      $arraySelect = $db->prepare(exec WebSite.dbo.server_value_product 2);
      $arraySelect->execute();
      $arrayExemple = $arraySelect->fetchAll();

      procedure_list = array($arrayExemple);
       
      !in_array($valorSelect, $procedure_list){
         echo 'O Valor selecionado não existe nos resultados da procedure';
      }
       
       
      alguem sabe como posso listar o resultado da procedure em array. e sabe se o valor que procuro está entre os resultados da array.
    • By macpeace
      public function assignAll() { try { if ( isset( $this->view->tpldata ) ) { unset( $this->view->tpldata ); } //AQUI E O ERRO!!!!! foreach ( $this->data as $data ) { foreach ( $data as $key => $value ) { $this->assigndata[$key] = trim( $value ); } } } catch ( Exception $e ) { echo $e->getMessage(); exit; } return $this; } Invalid argument supplied for foreach() in C:\xampp\htdocs\Homem-das-casas\app\DB.class.php on line 726
       
      Não me conecta com a bd e não consigo sair daqui, preciso de ajuda por favor, pois nao entendo que esta errado!
    • By joaolepaus
      Boa tarde pessoal, não tenho muito conhecimento de PHP, mas estou tentando receber os dados via POST de um array, porem quando recebo esse array vem todos os dados referenete a todos os ids, mas na verdade eu quero receber somente os dados que estão com o id selecionado por checkbox.
      O código que estou usando para receber o POST é esse:
       
      $id = $_POST['idplano']; $operadora = $_POST['operadora']; $total = $_POST['total']; $img = $_POST['img']; $plano = $_POST['plano']; $acomodacao = $_POST['acomodacao']; $abrangencia = $_POST['abrangencia']; $segmento = $_POST['segmento']; $participacao = $_POST['participacao']; $valorFaixa = $_POST['valorFaixa']; for($i = 0; $i < count($id); $i++) { echo "| $id[$i] | $operadora[$i] | $total[$i] | $img[$i] | $plano[$i] | $acomodacao[$i] | $abrangencia[$i] | $segmento[$i] | $participacao[$i] | $valorFaixa[$i] |<br>"; } Os meus inputs estão nomeados assim: idplano[], operadora[] e assim vai.
       
      fiz o var_dump no post, notem que só tem 3 ids checked mas chega os dados de todos os ids. 
       
      array(12) { ["teste"]=> string(0) "" ["checked"]=> array(3) { [0]=> string(2) "34" [1]=> string(2) "30" [2]=> string(2) "38" } ["img"]=> array(25) { [0]=> string(17) "5efb353cd0df4.jpg" [1]=> string(17) "5efb353cd0df4.jpg" [2]=> string(17) "5efb353cd0df4.jpg" [3]=> string(17) "5efb353cd0df4.jpg" [4]=> string(17) "5efb353cd0df4.jpg" [5]=> string(17) "5efb353cd0df4.jpg" [6]=> string(17) "5efb353cd0df4.jpg" [7]=> string(17) "5efb353cd0df4.jpg" [8]=> string(17) "5efb353cd0df4.jpg" [9]=> string(17) "5efb353cd0df4.jpg" [10]=> string(17) "5efb353cd0df4.jpg" [11]=> string(17) "5efb332233b92.jpg" [12]=> string(17) "5efb332233b92.jpg" [13]=> string(17) "5efb332233b92.jpg" [14]=> string(17) "5efb332233b92.jpg" [15]=> string(17) "5efdd26866510.jpg" [16]=> string(17) "5efdd26866510.jpg" [17]=> string(17) "5efdd26866510.jpg" [18]=> string(17) "5efdd26866510.jpg" [19]=> string(17) "5efdd26866510.jpg" [20]=> string(17) "5efdd26866510.jpg" [21]=> string(17) "5efdd26866510.jpg" [22]=> string(17) "5efdd26866510.jpg" [23]=> string(17) "5efdd26866510.jpg" [24]=> string(17) "5efdd26866510.jpg" } ["total"]=> array(25) { [0]=> string(5) "74.78" [1]=> string(6) "143.23" [2]=> string(5) "186.2" [3]=> string(6) "159.14" [4]=> string(6) "206.89" [5]=> string(6) "118.23" [6]=> string(5) "153.7" [7]=> string(6) "131.36" [8]=> string(6) "183.91" [9]=> string(6) "117.98" [10]=> string(6) "144.82" [11]=> string(5) "179.6" [12]=> string(6) "207.38" [13]=> string(6) "235.12" [14]=> string(6) "283.91" [15]=> string(6) "202.17" [16]=> string(6) "242.62" [17]=> string(6) "252.54" [18]=> string(6) "303.05" [19]=> string(6) "220.68" [20]=> string(6) "264.76" [21]=> string(6) "303.72" [22]=> string(6) "364.53" [23]=> string(6) "494.16" [24]=> string(6) "593.03" } ["idplano"]=> array(25) { [0]=> string(2) "34" [1]=> string(2) "35" [2]=> string(2) "36" [3]=> string(2) "47" [4]=> string(2) "48" [5]=> string(2) "49" [6]=> string(2) "50" [7]=> string(2) "51" [8]=> string(2) "52" [9]=> string(2) "53" [10]=> string(2) "54" [11]=> string(2) "30" [12]=> string(2) "31" [13]=> string(2) "32" [14]=> string(2) "33" [15]=> string(2) "37" [16]=> string(2) "38" [17]=> string(2) "39" [18]=> string(2) "40" [19]=> string(2) "41" [20]=> string(2) "42" [21]=> string(2) "43" [22]=> string(2) "44" [23]=> string(2) "45" [24]=> string(2) "46" } ["operadora"]=> array(25) { [0]=> string(14) "Premium Saúde" [1]=> string(14) "Premium Saúde" [2]=> string(14) "Premium Saúde" [3]=> string(14) "Premium Saúde" [4]=> string(14) "Premium Saúde" [5]=> string(14) "Premium Saúde" [6]=> string(14) "Premium Saúde" [7]=> string(14) "Premium Saúde" [8]=> string(14) "Premium Saúde" [9]=> string(14) "Premium Saúde" [10]=> string(14) "Premium Saúde" [11]=> string(4) "Samp" [12]=> string(4) "Samp" [13]=> string(4) "Samp" [14]=> string(4) "Samp" [15]=> string(15) "Unimed Vitória" [16]=> string(15) "Unimed Vitória" [17]=> string(15) "Unimed Vitória" [18]=> string(15) "Unimed Vitória" [19]=> string(15) "Unimed Vitória" [20]=> string(15) "Unimed Vitória" [21]=> string(15) "Unimed Vitória" [22]=> string(15) "Unimed Vitória" [23]=> string(15) "Unimed Vitória" [24]=> string(15) "Unimed Vitória" } ["plano"]=> array(25) { [0]=> string(6) "Bronze" [1]=> string(17) "Infinity (TIPO 1)" [2]=> string(17) "Infinity (TIPO 1)" [3]=> string(17) "Infinity (TIPO 2)" [4]=> string(17) "Infinity (TIPO 2)" [5]=> string(22) "Personnalité (TIPO 1)" [6]=> string(22) "Personnalité (TIPO 1)" [7]=> string(22) "Personnalité (TIPO 2)" [8]=> string(22) "Personnalité (TIPO 2)" [9]=> string(6) "Bronze" [10]=> string(7) "Platina" [11]=> string(17) "Essencial (Prata)" [12]=> string(13) "Basico (Azul)" [13]=> string(22) "Personalizado (Branco)" [14]=> string(18) "Executivo (Branco)" [15]=> string(18) "Fácil Perfil (G2)" [16]=> string(18) "Fácil Perfil (G2)" [17]=> string(13) "Personal (G2)" [18]=> string(13) "Personal (G2)" [19]=> string(27) "Participativo Estadual (G2)" [20]=> string(27) "Participativo Estadual (G2)" [21]=> string(21) "Premium Nacional (G2)" [22]=> string(21) "Premium Nacional (G2)" [23]=> string(15) "VitoriaMed (G2)" [24]=> string(15) "VitoriaMed (G2)" } ["acomodacao"]=> array(25) { [0]=> string(12) "Ambulatorial" [1]=> string(10) "Enfermaria" [2]=> string(11) "Apartamento" [3]=> string(10) "Enfermaria" [4]=> string(11) "Apartamento" [5]=> string(10) "Enfermaria" [6]=> string(11) "Apartamento" [7]=> string(10) "Enfermaria" [8]=> string(11) "Apartamento" [9]=> string(12) "Ambulatorial" [10]=> string(12) "Ambulatorial" [11]=> string(10) "Enfermaria" [12]=> string(10) "Enfermaria" [13]=> string(10) "Enfermaria" [14]=> string(11) "Apartamento" [15]=> string(10) "Enfermaria" [16]=> string(11) "Apartamento" [17]=> string(10) "Enfermaria" [18]=> string(11) "Apartamento" [19]=> string(10) "Enfermaria" [20]=> string(11) "Apartamento" [21]=> string(10) "Enfermaria" [22]=> string(11) "Apartamento" [23]=> string(10) "Enfermaria" [24]=> string(11) "Apartamento" } ["abrangencia"]=> array(25) { [0]=> string(8) "Estadual" [1]=> string(8) "Estadual" [2]=> string(8) "Estadual" [3]=> string(8) "Estadual" [4]=> string(8) "Estadual" [5]=> string(8) "Estadual" [6]=> string(8) "Estadual" [7]=> string(8) "Estadual" [8]=> string(8) "Estadual" [9]=> string(8) "Estadual" [10]=> string(8) "Estadual" [11]=> string(20) "Grupo de Municípios" [12]=> string(20) "Grupo de Municípios" [13]=> string(8) "Estadual" [14]=> string(8) "Estadual" [15]=> string(20) "Grupo de Municípios" [16]=> string(20) "Grupo de Municípios" [17]=> string(20) "Grupo de Municípios" [18]=> string(20) "Grupo de Municípios" [19]=> string(8) "Estadual" [20]=> string(8) "Estadual" [21]=> string(8) "Nacional" [22]=> string(8) "Nacional" [23]=> string(8) "Nacional" [24]=> string(8) "Nacional" } ["segmento"]=> array(25) { [0]=> string(11) "Empresarial" [1]=> string(11) "Empresarial" [2]=> string(11) "Empresarial" [3]=> string(11) "Empresarial" [4]=> string(11) "Empresarial" [5]=> string(11) "Empresarial" [6]=> string(11) "Empresarial" [7]=> string(11) "Empresarial" [8]=> string(11) "Empresarial" [9]=> string(14) "Pessoa Física" [10]=> string(14) "Pessoa Física" [11]=> string(20) "Coletivo por Adesão" [12]=> string(20) "Coletivo por Adesão" [13]=> string(20) "Coletivo por Adesão" [14]=> string(20) "Coletivo por Adesão" [15]=> string(20) "Coletivo por Adesão" [16]=> string(20) "Coletivo por Adesão" [17]=> string(20) "Coletivo por Adesão" [18]=> string(20) "Coletivo por Adesão" [19]=> string(20) "Coletivo por Adesão" [20]=> string(20) "Coletivo por Adesão" [21]=> string(20) "Coletivo por Adesão" [22]=> string(20) "Coletivo por Adesão" [23]=> string(20) "Coletivo por Adesão" [24]=> string(20) "Coletivo por Adesão" } ["participacao"]=> array(25) { [0]=> string(45) "Integral (Sem cobrança de coparticipações)" [1]=> string(19) "Consulte o corretor" [2]=> string(19) "Consulte o corretor" [3]=> string(60) "Coparticipações nas consultas eletivas e de pronto socorro" [4]=> string(42) "Nas consultas eletivas e de pronto socorro" [5]=> string(19) "Consulte o corretor" [6]=> string(19) "Consulte o corretor" [7]=> string(22) "Nas consultas e exames" [8]=> string(22) "Nas consultas e exames" [9]=> string(22) "Nas consultas e exames" [10]=> string(22) "Nas consultas e exames" [11]=> string(42) "Nas consultas eletivas e de pronto socorro" [12]=> string(42) "Nas consultas eletivas e de pronto socorro" [13]=> string(42) "Nas consultas eletivas e de pronto socorro" [14]=> string(42) "Nas consultas eletivas e de pronto socorro" [15]=> string(22) "Nas consultas e exames" [16]=> string(22) "Nas consultas e exames" [17]=> string(25) "Somente em pronto socorro" [18]=> string(25) "Somente em pronto socorro" [19]=> string(22) "Nas consultas e exames" [20]=> string(22) "Nas consultas e exames" [21]=> string(22) "Nas consultas e exames" [22]=> string(22) "Nas consultas e exames" [23]=> string(45) "Integral (Sem cobrança de coparticipações)" [24]=> string(45) "Integral (Sem cobrança de coparticipações)" } ["valorFaixa"]=> array(25) { [0]=> string(26) "De 0 a 18 anos R$74.78 " [1]=> string(27) "De 0 a 18 anos R$143.23 " [2]=> string(27) "De 0 a 18 anos R$186.20 " [3]=> string(27) "De 0 a 18 anos R$159.14 " [4]=> string(27) "De 0 a 18 anos R$206.89 " [5]=> string(27) "De 0 a 18 anos R$118.23 " [6]=> string(27) "De 0 a 18 anos R$153.70 " [7]=> string(27) "De 0 a 18 anos R$131.36 " [8]=> string(27) "De 0 a 18 anos R$183.91 " [9]=> string(27) "De 0 a 18 anos R$117.98 " [10]=> string(27) "De 0 a 18 anos R$144.82 " [11]=> string(27) "De 0 a 18 anos R$179.60 " [12]=> string(27) "De 0 a 18 anos R$207.38 " [13]=> string(27) "De 0 a 18 anos R$235.12 " [14]=> string(27) "De 0 a 18 anos R$283.91 " [15]=> string(27) "De 0 a 18 anos R$202.17 " [16]=> string(27) "De 0 a 18 anos R$242.62 " [17]=> string(27) "De 0 a 18 anos R$252.54 " [18]=> string(27) "De 0 a 18 anos R$303.05 " [19]=> string(27) "De 0 a 18 anos R$220.68 " [20]=> string(27) "De 0 a 18 anos R$264.76 " [21]=> string(27) "De 0 a 18 anos R$303.72 " [22]=> string(27) "De 0 a 18 anos R$364.53 " [23]=> string(27) "De 0 a 18 anos R$494.16 " [24]=> string(27) "De 0 a 18 anos R$593.03 " } } Como que eu faria para pegar somente os dados referente aos ids selecionados no checkebox ? 
       
    • By jganjos
      Boa tarde senhores.
      Estou gerando esta array com o PHP
       
      Array ( [header] => Array ( [ico] => fas fa-building [tit] => Empresa [lab] => Cadastro da Empresa ) [forms] => Array ( [RAZAO] => Array ( [tit] => Razão Social ) [NFANTASIA] => Array ( [tit] => Nome Fantasia [lin] => 1 [col] => 10 ) [STATUS] => Array ( [tit] => Status [typ] => switch [val] => 1,0 [lin] => 1 [col] => 2 ) [INSCRICAO] => Array ( [tit] => Inscrição [lin] => 2 [col] => 4 ) [IE] => Array ( [tit] => Insc. Estadual [lin] => 2 [col] => 4 ) [IM] => Array ( [tit] => Insc. Municipal [lin] => 2 [col] => 4 ) [CEP] => Array ( [tit] => CEP [lin] => 3 [col] => 4 [btn] => search ) [TIPO_END] => Array ( [typ] => hidden ) [ENDERECO] => Array ( [tit] => Endereço [lin] => 4 [col] => 9 ) [NUM_END] => Array ( [tit] => Número [lin] => 4 [col] => 3 ) [BAIRRO] => Array ( [tit] => Bairro [lin] => 5 [col] => 6 ) [COMPL] => Array ( [tit] => Complemento [lin] => 5 [col] => 6 ) [MUNICIPIO] => Array ( [tit] => Município [lin] => 6 [col] => 9 ) [UF] => Array ( [tit] => Estado [typ] => list [tab] => estados [lin] => 6 [col] => 3 ) [TEL1] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [TEL2] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [EMAIL] => Array ( [tit] => e-mail [typ] => email [lin] => 8 [col] => 6 ) [SITE] => Array ( [tit] => Site da empresa [typ] => website [lin] => 8 [col] => 6 ) ) ) Preciso listar os valores da Array *FORMS* e seus respectivos filhos mas não estou conseguindo utilizando o foreach.
      Alguém teria uma dica?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.