Ir para conteúdo
Fórum Script Brasil
  • 0

Array/Matriz/JSON


aprendiz_ce

Pergunta

Será que alguém poderia me dar uma ajuda para ajustar essa rotina que estou testando?

Necessito formatar dessa maneira:

{

"contatos": [

{

"cod": "0001",

"nome": "fulano",

"fone": {

"movel": "99887766",

"casa": "33554477",

"trab": "77665544"

}

},

]

}

Mas só estou conseguindo deixar assim:

{

"contatos": [

{

"cod": "0001",

"nome": "fulano"

},

{

"fone": [

{

"movel": "99887766"

},

{

"casa": "33554477"

},

{

"trab": "665544"

}

]

}

]

}

Rotina:

<?php

$arrContatos = array();

$arrFones = array();

$arrContatos[] = array('cod'=>'0001','nome'=>'fulano');

$arrFones[] = array('movel'=>'99887766');

$arrFones[] = array('casa'=>'33554477');

$arrFones[] = array('trab'=>'665544');

$arrContatos[] = array('fone'=>$arrFones);

header('Content-type: application/json');

echo json_encode(array('contatos'=>$arrContatos));

?>

Na realidade isso é só um rascunho, pois os array/matrizes/objetos vão ser carregados com dados do banco, mas pra eu aprender e ver onde estou errando,

o exemplo já me ajudaria a tirar as minhas dúvidas.

Grato a todos e aguardo qualquer ajuda.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Teste essa estrutura:

$arrContatos[] = array(
    'cod'  => '0001', 
    'nome' => 'fulano',
    'fone' => array(
        'movel'    => '99887766',
        'casa'    => '33554477',
        'trab'    => '665544'
    )
); 

header('Content-type: application/json'); 

echo json_encode(array('contatos'=>$arrContatos));

Link para o comentário
Compartilhar em outros sites

  • 0
Teste essa estrutura:

$arrContatos[] = array(
    'cod'  => '0001', 
    'nome' => 'fulano',
    'fone' => array(
        'movel'    => '99887766',
        'casa'    => '33554477',
        'trab'    => '665544'
    )
); 

header('Content-type: application/json'); 

echo json_encode(array('contatos'=>$arrContatos));

Perfeito!

Assim deu certo, mas no caso do carregamento dinâmico vai dar certo?

Tenho duas tabela no DB, aonde uma é a CONTATOS e a outra os TELEFONE relacionados. Como eu faço essa junção? Ou seja, criar esse SEGUNDO array dentro do outro já que na TABELA CONTATOS não exite a coluna TELEFONE.

Já estou tonto de tentar, tentar, tentar e no final não dar certo.

Editado por aprendiz_ce
Link para o comentário
Compartilhar em outros sites

  • 0
Como você está fazendo?

Cole seu código ai para analisarmos...

Abraço

O meu problema seria o seguinte: Como ficaria se o "$arrFones" fosse carregado/preenchido com o comando "while ($arrFones = mysql_fetch_array($resultSqlFones))"? Tentei, mas o mesmo acaba incluindo os colchetes ([]) para os fones, e é exatamente isso que não quero.

Seria só isso mesmo.

Grato pela sua pronta atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

Como você está adicionando este array no array principal?

Se você adicionar o array de fones referenciando quais elemento quer recuperar. Assim:

$arrContatos[] = array(
    'cod'     => '0001', 
    'nome'  => 'fulano',
      array(
        'movel'    => $arrFones['movel'],
        'casa'    => $arrFones['casa'],
        'trab'    => '$arrFones['trab']
    )
);

Link para o comentário
Compartilhar em outros sites

  • 0
Como você está adicionando este array no array principal?

Se você adicionar o array de fones referenciando quais elemento quer recuperar. Assim:

$arrContatos[] = array(
    'cod'     => '0001', 
    'nome'  => 'fulano',
      array(
        'movel'    => $arrFones['movel'],
        'casa'    => $arrFones['casa'],
        'trab'    => '$arrFones['trab']
    )
);
Por gentileza, dè uma olhada nessa rotina. Segue:
<?php    
    // Conexão com o banco de dados
    $con = mysql_connect('localhost','XXXX','XXXX') or die('Erro de conexão com o DB');
    mysql_select_db('XXXX',$con);

    // Contatos 
    $sqlContatos = "SELECT * FROM contatos";
    $resultContatos = mysql_query($sqlContatos, $con) or die('Query erro:  ' . $sqlContatos);
    
    // Gera array com os dados dos contatos    
    while ($rowContatos = mysql_fetch_array($resultContatos)) {
    
        // utilizado para definir o array quando houver mais de 1 registro retornado.
        $i = 0;
        foreach($rowContatos as $key => $value) {
            if (is_string($key)) {
                // Cria um array com o nome do campo e valor.
                $fieldsContatos[mysql_field_name($resultContatos, $i++)] = $value;
            }
        }

        // Fones
        $sqlFones = "SELECT * FROM fones WHERE cli_codigo = " . $rowContatos['cli_codigo'];
        $resultFones = mysql_query($sqlFones, $con) or die('Query erro:  '.$sqlFones);
    
        // Gera array com os dados dos fones        
        while ($rowFones = mysql_fetch_array($resultFones)) {
    
            // utilizado para definir o array quando houver mais de 1 registro retornado.
            $i = 0;
            foreach($rowFones as $key => $value) {
                if (is_string($key)) {
                    // Cria um array com o nome do campo e valor
                    $fieldsFones[mysql_field_name($resultFones, $i++)] = $value;
                }
            }
            
            $result_json_fones[] = $fieldsFones;
        }
    
    }    

    $fieldsContatos['fones'] = $result_json_fones;
        
    header('Content-type: application/json');
    echo json_encode(array('contatos'=>$fieldsContatos));
    
    /* disconnect from the db */
    @mysql_close($con);
?>

Grato pela sua atenção e aguardo pelo seu comentário.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...