Jump to content
Luiz Henrique

Como criar array multidimensional

Recommended Posts

Olá pessoas,

 

Como faço para criar um array multidimensional?

É uma busca e os dados recebo de um arquivo json armazeno em um array usando um foreach e o strpos para verificar se a busca existe, então fiz isso:

 

 

//$data é o arquivo json
$array = array();
foreach($data as $key => $value){ 
 if(strpos(...)){
      $array['id'][] = $value->id;
      $array['nome'][] = $value->nome;
      $array['valor'][] = $value->valor;
 }
}  

Porém isso me retorna 

 

id' => 
    array (size=3)
      0 => int 1
      1 => int 2
      2 => int 3
  'nome' => 
    array (size=3)
      0 => string 'teste1'
      1 => string 'teste2'
      2 => string 'teste3'
  'valor' => 
    array (size=3)
      0 => float 28
      1 => float 30
      2 => float 35

 Mas preciso dele neste formato

  

array (size=3)
  0 =>     
      public 'id' => int 1
      public 'nome' => string 'teste1'
      public 'valor' => float 28
  1 => 
    public 'id' => int 2
      public 'nome' => string 'teste2'
      public 'valor' => float 30
  2 => 
    public 'id' => int 3
      public 'nome' => string 'teste3'
      public 'valor' => float 35

E não consigo fazer de forma alguma !

 

Citar

Motivo de usar json e não DB, é uma lista de valores que é usado muito então para reduzir o tráfego no DB vai no arquivo mesmo.

 

Share this post


Link to post
Share on other sites
<?php
    //!Preencha com os dados do seu banco de dados.
    $host = "localhost";
    $dbname = "";
    $charset = "utf8mb4";
    $user = "";
    $password = "";
 
    $dbase = new PDO("mysql:host=$host;dbname=$dbname;charset=$charset", $user, $password);
    $dbase->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
 
    $select = $dbase->prepare("SELECT * FROM `tabela`;"); //? Coloque a query que você está usando;
    $select->execute();
 
    $arr = [];
 
    while ($data = $select->fetch(PDO::FETCH_OBJ)) {
 
        $id = $data->id;
        $nome = $data->nome;
        $valor = $data->valor;
 
        $arr[] = [
            "id" => $id,
            "nome" => $nome,
            "valor" => $valor
        ];
    };

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 ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • By mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • By mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • By clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • By Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Important Information

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