Ir para conteúdo

POWERED BY:

Arquivado

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

Rafa Figueiredo

[Resolvido] Exibir array PHP

Recommended Posts

É o seguinte tenho um array ordenado já, só que não consigo exibi-lo numa repetição deste modo.

 

o array é esse

 

Array (

[0] => 20120926%08:00:00%1%2012-09-26

[1] => 20120926%08:30:00%1%2012-09-26

[2] => 20120926%09:00:00%1%2012-09-26

[3] => 20120926%09:30:00%1%2012-09-26

[4] => 20120926%10:00:00%1%2012-09-26

[5] => 20120926%10:30:00%1%2012-09-26

[6] => 20120926%11:00:00%1%2012-09-26

[7] => 20120927%08:00:00%1%2012-09-27

[8] => 20120927%08:30:00%1%2012-09-27

[9] => 20120927%09:00:00%1%2012-09-27

[10] => 20120927%09:30:00%1%2012-09-27

[11] => 20120927%10:00:00%1%2012-09-27

[12] => 20120927%10:30:00%1%2012-09-27

[13] => 20120927%11:00:00%1%2012-09-27

[14] => 20120928%08:00:00%1%2012-09-28

[15] => 20120928%08:30:00%1%2012-09-28

[16] => 20120928%09:00:00%1%2012-09-28

[17] => 20120928%09:30:00%1%2012-09-28

[18] => 20120928%10:00:00%1%2012-09-28

[19] => 20120928%10:30:00%1%2012-09-28

[20] => 20120928%11:00:00%1%2012-09-28

[21] => 20120929%08:00:00%1%2012-09-29

[22] => 20120929%08:30:00%1%2012-09-29

[23] => 20120929%09:00:00%1%2012-09-29

[24] => 20120929%09:30:00%1%2012-09-29

[25] => 20120929%10:00:00%1%2012-09-29

[26] => 20120929%10:30:00%1%2012-09-29

[27] => 20120929%11:00:00%1%2012-09-29 )

 

Array de data(Ymd) esse primeiro indice é só para ordenação, segundo item é as horas, o terceiro é um código vai ser descartado, e o quarto é a data, o separador no caso é '%'.

 

a exibição que não consigo fazer seria a seguinte:

 

2012-09-26 2012-09-27 2012-09-28 2012-09-29

08:00:00 08:00:00 08:00:00 08:00:00

08:30:00 08:30:00 08:30:00 08:30:00

09:00:00 09:00:00 09:00:00 09:00:00

09:30:00 09:30:00 09:30:00 09:30:00

10:00:00 10:00:00 10:00:00 10:00:00

10:30:00 10:30:00 10:30:00 10:30:00

11:00:00 11:00:00 11:00:00 11:00:00

 

alguém pode me ajudar, por favor já tentei de tudo que é jeito, mais não achei a logica do negocio.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
$arr = array("20120926%08:00:00%1%2012-09-26", "20120927%08:00:00%1%2012-09-27", "20120928%08:00:00%1%2012-09-28");
foreach($arr as $Arr) {
$separacao = explode("%",$Arr);
unset($separacao[2]);
unset($separacao[3]);
$new[] = $separacao;
}

$regra = "/([0-9]{4})([0-9]{2})([0-9]{2})/";
foreach($new as $New) {
   preg_match($regra, $New[0], $matches, PREG_OFFSET_CAPTURE);
$data = $matches[1][0] . "-" . $matches[2][0] . "-" . $matches[3][0];
echo "<br />";
echo $data;
echo "<br />";
echo $New[1];
echo "<br />";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://php.net/manual/pt_BR/function.split.php

 

$arr = array("20120926%08:00:00%1%2012-09-26", "20120927%08:00:00%1%2012-09-27", "20120928%08:00:00%1%2012-09-28");

   foreach($arr as $item){
       list ($ordenacao, $horario, $indice, $data) = split ('[%]', $item);
       echo "Ordem: $ordenacao Horario: $horario; Indice: $indice Data: $data <br />\n";
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php
   $arr = array("20120926%08:00:00%1%2012-09-26", "20120927%08:00:00%1%2012-09-27", "20120928%08:00:00%1%2012-09-28");
   foreach($arr as $item){
       list ($ordenacao, $horario, $indice, $data) = split ('[%]', $item);
       $r[] = array(
           'order' => $ordenacao,
           'time'  => $horario,
           'date'  => $data
       );
   }
?>

<?php foreach($r as $chave => $item) : ?>
 <?php foreach($item as $key => $value) : ?>
   <span><label><?php echo $key ?></label> : <?php echo $value ?></span><br />
 <?php endforeach; ?>
 <br />
<?php endforeach; ?>

 

split foi depreciado, desta forma é preferível utilizar explode.

 

http://php.net/explode

 

e no caso aqui, foi utilizado expressão regular porque não havia barras nem traços na data para pegar com split/explode.

 

 

Nem sabia disso xD

 

vai caí em qual versão?

 

to com 5.3.15

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajudou, mais ainda não ordenou como eu queria:

2012-09-26

08:00:00

08:30:00

09:00:00

09:30:00

10:00:00

10:30:00

11:00:00

 

2012-09-27

08:00:00

08:30:00

09:00:00

09:30:00

10:00:00

10:30:00

11:00:00

...e assim em diante para as outras datas

fiz isso quase funcionou mais ainda não foi

 

$ind2 = count($vet);
for($j=0;$j < $ind2;$j++){
$registros = explode("%",$vet[$j]);
$registros2 = explode("%",$vet[$j+1]);

if($registros[0] != $registros2[0]){
            echo "<br />";
            echo $registros[0]; 
             echo "<br />";
       }
       echo $registros[1];
        echo "<br />";
}

 

isso me exibiu assim

08:00:00

08:30:00

09:00:00

09:30:00

10:00:00

10:30:00

 

20120926

11:00:00

08:00:00

08:30:00

09:00:00

09:30:00

10:00:00

10:30:00

 

20120927

11:00:00

08:00:00

08:30:00

09:00:00

09:30:00

10:00:00

10:30:00

 

ainda está errado e deu um warning na linha $registros2 = explode("%",$vet[$j+1]);

 

Será que não tem solução, não tem como exibir desse modo???

já tentei de outras formas e não consigo exibir assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara...

 

//...
for($j=0;$j <= $ind2;$j++){
   list ($ordenacao, $horario, $indice, $data) = explode('%', $vet[j]);
   //if(ind2 <= (j+1)) list ($ordenacao2, $horario2, $indice2, $data2) = explode('%', $vet[j+1); //pra que isso??

   echo 'indice: '.$indice.'<br />';
   echo 'ordenacao: '.$ordenacao.'<br />';
   echo 'horario: '.$horario.'<br />';
   echo 'data: '.$data.'<br />';
   echo '<hr />';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Enfim deu certo com o seguinte codigo:

$ind2 = count($vet);
for($j=0;$j < $ind2;$j++){
   $red = explode('%', $vet[$j]);
   if(isset($ordenacao)){

       if($j == 0 && $red[0] != $ordenacao){
           echo "DATA: ".$red[3]."<br />";
       }

       if ($red[0] != $ordenacao) {
           echo "DATA: ".$red[3]."<br />";
       } 
   }else{
      echo "DATA: ".$red[3]."<br />"; 
   }

   list ($ordenacao, $horario, $indice, $data) = explode('%', $vet[$j]);
   //if(ind2 <= (j+1)) list ($ordenacao2, $horario2, $indice2, $data2) = explode('%', $vet[j+1); //pra que isso??

   //echo 'indice: '.$indice.'<br />';
   //echo 'ordenacao: '.$ordenacao.'<br />';
   echo 'horario: '.$horario.'<br />';
   //echo 'data: '.$data.'<br />';
   if ($red[0] != $ordenacao) {
           echo "<hr />";
       } 
}          

 

isso me ordenou perfeitamente assim

DATA: 2012-09-26

horario: 08:00:00

horario: 08:30:00

horario: 09:00:00

horario: 09:30:00

horario: 10:00:00

horario: 10:30:00

horario: 11:00:00

DATA: 2012-09-27

horario: 08:00:00

horario: 08:30:00

horario: 09:00:00

horario: 09:30:00

horario: 10:00:00

horario: 10:30:00

horario: 11:00:00

DATA: 2012-09-28

horario: 08:00:00

horario: 08:30:00

horario: 09:00:00

horario: 09:30:00

horario: 10:00:00

horario: 10:30:00

horario: 11:00:00

DATA: 2012-09-29

horario: 08:00:00

horario: 08:30:00

horario: 09:00:00

horario: 09:30:00

horario: 10:00:00

horario: 10:30:00

horario: 11:00:00

 

obrigado os codigos ajudaram muito, para o resultado final.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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