Ir para conteúdo
jose_

Arrays aninhados

Recommended Posts

Galera! sou novo em php e no fórum , estou com um código onde tenho dois arrays, o primeiro é só para nomes e o segundo com os atributos  de cada nome(entidade) minha dúvida é como faço para o segundo array vir abaixo de cada nome, sei que dava pra fazer isso no mesmo array, mas..  o código é só um exemplo, pois tenho um problema parecido para resolver, porém puxando de duas tabelas do sql server 2008, meu código de exemplo segue abaixo.
 

<pre>
    <?php
/*nomes
$a = array(

       'fulano',
       '    sicrano',
       '    beltrano'
);

/*atributos*/
$b = array(
     
     'idade' => 26,
     'altura' => 1.70,
     'peso' => 60
);


foreach($a as $v){
    echo "{$v}";
}

?>
</pre>

 

Editado por Gabriel Heming
adicionar marcação de código

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 horas atrás, wootzor disse:

Não está claro o que pretendes. Tens três nomes no primeiro array, mas apenas um conjunto de atributos.

Eu entendo, fiz dessa forma porque achei que ficaria mais didático para entender minha dúvida, da forma que está ali, irá repetir os atributos para cada nome, não tem problema, como tinha dito é apenas um exemplo, o que eu quero é que na exibição, abaixo de cada nome, saia os atributos, mas não sei como fazer.

exemplo:

 fulano

     idade => 26
     altura => 1.70
     peso => 60
 sicrano

    idade => 26
     altura => 1.70
     peso => 60
 beltrano

    idade => 26
     altura => 1.70
     peso => 60

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 30/01/2018 at 13:57, jose_ disse:

[...]o que eu quero é que na exibição, abaixo de cada nome, saia os atributos, mas não sei como fazer[...]

 

De onde você está recuperando o nome e os atributos? Isso irá definir como poderá prosseguir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por lendadomato
      Pessoal,
       
      tenho uma aplicação que funcionava há muitos anos sem problemas, mas percebi que o meu servidor atualizou o PHP 5
      para PHP 7 sem me comunicar. Tenho uma função que contém alguns arrays e essa função parou de funcionar após a atualização.
      Gostaria saber se esse conjunto de arrays funciona dessa forma no PHP 7:
      $msg = array ( 'title' => 'Novo pedido', 'body' => $endereco, 'sound' => 'default' ); $fields = array ( 'to' => $tokenempresa, 'notification' => $msg ); $headers = array ( 'Authorization: key=' . API_ACCESS_KEY, 'Content-Type: application/json' ); Não entendo muito de PHP e não sei se esse código está correto.
       
    • Por gersonab
      há tempos utilizo para cadastrar data no BD a instrução :
      implode('-',array_reverse(explode('/',$data)))
      com isso no input posso colocar 09/02/2019 e no banco de dados grava 2019-02-09 , até ai sem problemas, porém ao atualizar um sistema para pdo, estou com problema no insert dinâmico, onde posso fazer 1 ou mais inserts, da forma abaixo cadastro quantos eu quiser :
      $sql = "INSERT INTO cantos ( id_t, id_c, data, ca, cant, po, des) VALUES (:id_t, :id_c, :data, :ca, :cant, :po, :des)";              $stmt = $pdo->prepare($sql);             foreach($_POST['idp'] as $indice => $valor) {             $stmt->bindParam(':id_t', $_POST['id_tor'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':id_c', $_POST['idp'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':data', $_POST['data'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':ca', $_POST["ca"][$indice], PDO::PARAM_STR);             $stmt->bindParam(':cant', $_POST['cant'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':po', $_POST['po'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':des', $_POST['des'][$indice], PDO::PARAM_STR);                              if ($stmt->execute()){                     echo "Cadastrado com sucesso.";             }
      no entento a data vai no formato do input 09/02/2019.
      caso utilize :
      $stmt->bindParam(':data', implode('-',array_reverse(explode('/',$_POST['data'][$indice]))), PDO::PARAM_STR);
      tenho o erro Strict standards: "Only variables should be passed by reference in "que significa "Apenas as variáveis podem ser passadas por referência"
      qual a melhor forma de se fazer neste caso ?
    • Por WictorP
      Olá, tudo bem? Eu espero que esteja!
       
      Estou com um pequeno problema em uma medida de segurança que estou fazendo, acho que vocês podem me ajudar.
       
      Estou tentando criar uma defesa global de todos os valores obtidos através de formulários, ao qual o usuário irá preencher, ou seja, uma pequena defesa contra SQLInjection.
      Sei que isto está longe de resolver o problema, mas acho que é só o que precisa para um projeto de pequeno porte.
      Para esta segurança eu pego tudo que vem por $_POST e passo na função addslashes e verifico se é uma string. Este método funciona, porém tem um defeito.
      Eu também trabalho com envio de Arrays no formulário, e para que a função addslashes funcione, todas as variáveis passadas pelo $_POST deve ser uma string (basicamente todo conteúdo não array de um formulário pode ser tratado como string, até as que contém só números).
       
      Tentei fazer uma verificação nesta função, que caso seja array, ele não faz essa adesão do addslashes e passa o array cru que será tratado mais pra frente na página que o requisitar, porém, não consigo fazer esta verificação com o is_array(), o IF passa como se fosse outra coisa e trata como se fosse string normal.
       
      Segue o código:

              $formulario = $_POST;         foreach($formulario AS $key => $valor) {             if(is_array($_POST[$key])) {                 $_POST[$key] = $_POST[$key];             }else {                 $_POST[$key] = filter_var(addslashes($_POST[$key]), FILTER_SANITIZE_STRING);             }         }
       
      Espero que possam me dar uma luz referente à isto.
      Grato, Wictor Pamplona.
    • Por maruanbredoff
      Boa tarde pessoal,
      Estou com quebrando a cabeça com uma situação no meu sistema.
      No sistema eu tenho uma tabela tratamento, clientes, dentista e procedimento. 
      Dentro do sistema tenho uma tela onde a pessoa vai cadastrar o tratamento para o paciente e nessa tela a pessoa escolhe quais os procedimento, e qual o dentista que vai realizar.
      O campo idprocedimento é um array pois o mesmo tratamento pode ter varios procedimentos.
       
      O meu problema está em apresentar esses dados do array na tabela. o Select é esse a seguir
       
      SELECT t.idtratamento,t.idprocedimento,c.idcliente,c.nome as cliente,d.iddentista,d.nome as dentista,p.descricao as procedimento,t.idtratamento,t.datainicio,t.obs,t.status_tratamento
      FROM tratamento t
      INNER JOIN clientes c ON t.idcliente = c.idcliente
      INNER JOIN dentista d ON d.iddentista = t.iddentista
      INNER JOIN procedimento p ON p.idprocedimento = t.idprocedimento
      where t.idcliente = 1 and p.idprocedimento in (t.idprocedimento)
       
      Com esse select o retorno é o seguinte:
      idtratamento idprocedimento cliente iddentista dentista procedimento   76 260 Paciente teste 1 Dentista Teste Aparelho extra-bucal 77 31,5,6 Paciente teste 1 Dentista Teste Alveoloplastia   
      Como podem ver, o campo idprocedimento está caindo junto no array, eu queria separar e em vez de 1 linha na tabela aparecesse 3 linhas com esses procedimentos separados. Alguem pode me ajudar?
    • Por sheepziiin
      Boa tarde colegas !
      Estou quebrando a cabeça com um job para tratamento de logradouros. Segue o raciocínio:  
      Tenho uma lista com todos os endereços do estado de São Paulo, onde os mesmos são extraídos da seguinte forma:
       
      Exemplo:
      AL-AFONSO SCHMIDT/CDM:ED. SOPHIS SANTANA_COM PRUMADA/BLC:A-555-AP - Apartamento: 61 A AL-ANAPURUS/EDI:BOULEVARD/BLC:A-777-AP - Apartamento: 131 AL-ARAPANES/EDI:CDOE,6-5ºANDAR-309-AP - Apartamento: 42 AL-ARAPANES/EDI:COND.ED.MOEMA DUPLEX LIFE-1142-AP - Apartamento: 102 AL-ARAPANES/EDI:COND.ED.MOEMA DUPLEX LIFE-1142-AP - Apartamento: 42 AL-ARAPANES/EDI:PARC BRUMENADI-982-AP - Apartamento: 191 AL-BARROS/EDI:PERVAL-186-AP - Apartamento: 1601 AL-BARROS/EDI:PERVAL-186-BL - Blocos: B AP - Apartamento: 1302 AL-CAETANO,S/CDM:ED. GIARDINO_CDOE_1_ANDAR_11 A 13-165-AP - Apartamento: 63 AL-CAETANO,S/EDI:ESPLENDOR-1234-AP - Apartamento: 71 AL-CAETANO,S/EDI:MAGENTA I_CDOE_1_ANDAR_7 A 10-2575-AP - Apartamento: 94 AL-CALCUTA-195-AP - Apartamento: 02 AL-CAMPESTRE-728-CS - Casa: 1 AL-CASA BRANCA/CDM:BRISTOL-851-CJ - Conjunto: 11 AN - Andar: 01 AL-CASA BRANCA/CDM:SAINT SIMON-667-AP - Apartamento: 11
      Notem que os casos "não tem um padrão" (até tem por tipo de residencia). Utilizei inúmeras postagens aqui do fórum e consegui solucionar os casos para residencias (padrão TIPO_LOG;LOG;COMPL;NUM), no entanto as formulas e soluções aqui indicadas por vocês "param" na primeira sequencia numérica, entretanto para a maioria dos casos, o texto continua com letras, números e caracteres.
       
      Segue o padrão final que preciso chegar.
      Exemplo: AL-AFONSO SCHMIDT/CDM:ED. SOPHIS SANTANA_COM PRUMADA/BLC:A-555-AP - Apartamento: 61 A
      Resultado Tratado: AFONSO SCHMIDT 555
       
      Desde de já muito obrigado pelos retornos que certamente virão.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.