Ir ao conteúdo
  • Cadastre-se

PHP Quero ordenar um array multidimensional com sort()


Posts recomendados

<html>
  <head>
    <title>PHP Test</title>
  </head>
  <body>
    <?php
    $cidades = ['NY' => array('NY' => 8000000),
               'CA' => array('LA' => 3000000,
                             'SD' => 1300000,
                             'SJ' => 900000),
               'IL' => array('CH' => 2600000),
               'TX' => array('HT' => 2100000, 
                              'SA' => 1300000, 
                              'DL' => 1100000),
               'PA' => array('FF' => 1500000),
               'AZ' => array('PX' => 1400000)

    ];
    //ordenar
    sort($cidades); //isso é impossivel, eu sei
    print "<table border='1'>";
    foreach($cidades as $key => $value){
      foreach($value as $chave => $valor){ 
        print"<tr>";
        print"<td>$key</td><td>$chave</td><td>$valor</td> \n";
        print"</tr>";
      }
    }               
    print "</table>";  
   ?> 
  </body>
</html>

 

Link para o comentário
Compartilhar em outros sites

@Luiz Paulo Escobar 

Primeiro você deve se organizar

 

echo '<pre>'; / /organização/formataçãdo array
 print_r($cidades); // printar na tela a ordem do array exemplo pai/filho/etc...
echo '</pre>';

 

resultado

 

Array
(
    [0] => Array
        (
            [PX] => 1400000
        )

    [1] => Array
        (
            [FF] => 1500000
        )

    [2] => Array
        (
            [CH] => 2600000
        )

    [3] => Array
        (
            [NY] => 8000000
        )

    [4] => Array
        (
            [HT] => 2100000
            [SA] => 1300000
            [DL] => 1100000
        )

    [5] => Array
        (
            [LA] => 3000000
            [SD] => 1300000
            [SJ] => 900000
        )

)

 

A ordem ta certa mesmo?

 

outa coisa sobre a tabela em cima de cada uma as colunas verticais deixe o nome do que você está printando abaixo (só para fins de melhor entendimento do código) ai você pode postar de novo pvf. 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@cerumaninho Sim, mas a única coisa que quero saber é se é possível a ordenação do array multidimensional com sort(). Ou ou seja, ordenar o valor do array que está dentro do array. Sim ou não?

4 horas atrás, cerumaninho disse:

echo '<pre>'; / /organização/formataçãdo array
 print_r($cidades); // printar na tela a ordem do array exemplo pai/filho/etc...
echo '</pre>';

 

Isso eu faria para testes?

4 horas atrás, cerumaninho disse:

A ordem ta certa mesmo?

Sim, eu vou printar em uma tabela, o estado e as cidades, mais sua população, coloquei abreviado para não perder tempo, me desculpe.

4 horas atrás, cerumaninho disse:

outa coisa sobre a tabela em cima de cada uma as colunas verticais deixe o nome do que você está printando abaixo (só para fins de melhor entendimento do código) ai você pode postar de novo pvf. 

Como eu faria isso? 

Link para o comentário
Compartilhar em outros sites

@Luiz Paulo Escobar

Citação

Isso eu faria para testes?

sim print_r é muito ultio para array ele diz a ordem que tudo esta ficando de uma maneira organizada. e com o <pre> ai sim fica nor perfect. muito mais fácio de ler os arrays né;)

 

Citação

Sim, eu vou printar em uma tabela, o estado e as cidades, mais sua população, coloquei abreviado para não perder tempo, me desculpe.

D boas amigo!

 

Citação

Como eu faria isso? 

Eu faria assim uma variavel só para a tabela no código  e depois printaria.

 

    //crie uma variável para receber o código da tabela

    $tabela = '<table border="1">';//abre table
    $tabela .='<thead>';//abre cabeçalho
    $tabela .= '<tr>';//abre uma linha
    $tabela .= '<th>id</th>'; // colunas do cabeçalho
    $tabela .= '<th>estado</th>';
    $tabela .= '<th>num_abitantes</th>';
    $tabela .= '</tr>';//fecha linha
    $tabela .='</thead>'; //fecha cabeçalho

    $tabela .='<tbody>';//abre corpo da tabela

    //loop
    foreach($cidades as $key => $value){
     foreach($value as $chave => $valor){ 

    $tabela .= "<tr>";
    $tabela .= "<td>$key</td><td>$chave</td><td>$valor</td> \n";
    $tabela .= "</tr>";         
      }
    }    

    /*fim-loop*/
    $tabela .='</tbody>'; //fecha corpo
    $tabela .= '</table>';//fecha tabela

    echo $tabela; // imprime

 

Citação

 Sim, mas a única coisa que quero saber é se é possível a ordenação do array multidimensional com sort(). Ou ou seja, ordenar o valor do array que está dentro do array. Sim ou não?

 

O sort apenas classifica as matrizes em ordem crescente.

Já o asort classifica as  matrizes associativas em ordem crescente, de acordo com o valor.

Que é o que você procura hehehehe🐧

 

Citação

Sim, eu vou printar em uma tabela, o estado e as cidades, mais sua população, coloquei abreviado para não perder tempo, me desculpe.

agora entendi rs. bom é posivel sim tendo em mente que o seu filtro pode ter relação com a ordenação por letrar, numeros, chaves, matrizes. abaixo ta um exemplo do código final com algumas funções nativas.

 

 

<html>
  <head>
    <title>PHP Test</title>
  </head>
  <body>
    <?php
    $cidades = ['NY' => array('NY' => 8000000),
               'CA' => array('LA' => 3000000,'SD' => 1300000,'SJ' => 900000),
               'IL' => array('CH' => 2600000),
               'TX' => array('HT' => 2100000,
               'SA' => 1300000,'DL' => 1100000),
               'PA' => array('FF' => 1500000),
               'AZ' => array('PX' => 1400000)

    ];

    //ordenar
    
    //sort($cidades); //classificar matrizes em ordem crescente
    //rsort($cidades); //classificar matrizes em ordem decrescente
    asort($cidades); //classificar matrizes associativas em ordem crescente, de acordo com o valor
    //ksort($cidades); //classificar matrizes associativas em ordem crescente, de acordo com a chave
    // arsort($cidades); //classificar matrizes associativas em ordem decrescente, de acordo com o valor
    //krsort($cidades); //classificar matrizes associativas em ordem decrescente, de acordo com a chave          

    //crie uma variável para receber o código da tabela

    $tabela = '<table border="1">';//abre table
    $tabela .='<thead>';//abre cabeçalho
    $tabela .= '<tr>';//abre uma linha
    $tabela .= '<th>id</th>'; // colunas do cabeçalho
    $tabela .= '<th>estado</th>';
    $tabela .= '<th>num_abitantes</th>';
    $tabela .= '</tr>';//fecha linha
    $tabela .='</thead>'; //fecha cabeçalho

    $tabela .='<tbody>';//abre corpo da tabela

    //loop
    foreach($cidades as $key => $value){
     foreach($value as $chave => $valor){ 

    $tabela .= "<tr>";
    $tabela .= "<td>$key</td><td>$chave</td><td>$valor</td> \n";
    $tabela .= "</tr>";         
      }
    }    

    /*fim-loop*/
    $tabela .='</tbody>'; //fecha corpo
    $tabela .= '</table>';//fecha tabela

    echo $tabela; // imprime

    


   ?> 
  </body>
</html>

 

 

 

=================================================

ᕕ( ᐛ )ᕗ espero que o serumaninho tenha ajudado qualquer duvida estou aqui.⤜(⚆ᗜ⚆)⤏
* Não abandone seu tópico, dê retorno.
* Se uma resposta resolveu a pergunta clique em resolveu ou Curta :)

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!