Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DanielAndrade

Reordenar array - números pares primeiro?

Recommended Posts

Pessoal, tudo bom?

 

Entao.. tenho um relatorio que imprime credenciais de membros... primeiro a frente de todos.. depois o verso.... para que seja possivel imprimir o verso do relatorio no verso da pagina q foi impresso na frente... Ok?!

 

 

SóQ.. o relatorio vai imprimir, por exemplo 5 carteiras e duas carteiras por linha. A pagina da frente vai ficar assim:

 

1 - 2

3 - 4

5

 

E a do verso a mesma coisa:

1 - 2

3 - 4

5

 

Mas quando vc vira a folha para imprimir, o verso do 1 fica no 2 e vice-versa.

 

Bom, preciso reordenar o array resultante para que as informações do verso fiquem numa ordem semelhante a essa:

 

2 - 1

4 - 3

- 5

 

Posso fazer com usort()? Como implemento um funcao que reordene o array dessa forma?!?

 

Abraços

 

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

$array = array(4,2,3,6,7,1,5,8,10,9,11);

 

print_r($array);

echo "<br>";

 

// ordena a array para poder separar em ordem

sort($array);

 

print_r($array);

echo "<br>";

 

// contadores para par e impar

$j = 0;

$k = 0;

 

// percorre toda array para fazer a separação

for ($i=0;$i<count($array);$i++) {

// verifica se o valor é par

if($array[$i] % 2 == 0) {

$array_par[$j] = $array[$i];

$j++;

 

// senão ele coloca no impar

} else {

$array_impar[$k] = $array[$i];

$k++;

}

}

 

print_r($array_par);

echo "<br>";

 

print_r($array_impar);

echo "<br>";

 

// junta as duas arrays em uma única array

$juntar = array_merge($array_par,$array_impar);

 

print_r($juntar);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

wolf... Obg..

 

Tava tentando adaptar sua ideia mas nao consegui com o cenário que estou enfrentando..

 

No meu caso, tenho um array de objetos, que leio com um foreach. A primeira vez leio normalmente e exibo a frente da carteirinha. Exibo todas as frentes. Ordem normal de chaves do array: 1,2,3,4,5, ...

 

No segundo foreach, preciso exibir o verso, porém as chaves do array precisam estar invertidas. Agora a ordem é: 2,1,4,3,x,5.

 

Como eh q procedo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

creio que da pra fazer isso só com CSS, sem alterar o seu php

.carteira{float:left;width:50%}
.carteira:nth-child(even){float:rigth;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois eh... O problema é que preciso fazer uma quebra de pagina entre a frente e o verso... e isso eh feito com page-break no css... acontece que o page-brek-[inside, before, after] não funciona se houver float em heranças superiores... tentei resolver de várias maneiras...

 

Além de tudo isso, a classe MPDF (PHP) não consegue interpretar corretamente a biblioteca css que uso em todo o projeto.. entao pensei: Vamos reordenar o array... deve ser mais fácil...

 

e aqui estamos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, pessoal.. consegui!

foreach($carteiras as $ch=>$vl) {
  if($ch % 2 == 0) {
     $versos[($ch + 1)] = $vl;
  }else{
     $versos[($ch - 1)] = $vl;
  }
}
ksort($versos);

Seguindo a ideia do wolf, eu incrementava quando era par e decrementava quando era impar.

 

Como o primeiro elemento [0] seria PAR, ele iria ganhar mais 1, o segundo seria impar [1] e iria perder 1...

 

Depois e so reordenar pela nova chave adquirida... voilá!

 

Obg pela força de todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por 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
       
       
    • Por 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
    • Por 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
    • Por 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?

    • Por 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;  
×

Informação importante

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