Comunidad de diseño web y desarrollo en internet online

Dar formato y eliminar un valor de un array

Citar            
MensajeEscrito el 04 Jul 2014 10:52 pm
Estimados, disculpen lo básico, es un php que lee un xml, todo funciona bien, pero necesito lograr ordenar los resultados como lista (los entrega con saltos de linea <br>) y eliminar el primer valor (que son 10), el código es:

Código PHP :

if(isset($data['SONGHISTORY']['SONG']['TITLE'])) {
         $tmp_data = $data['SONGHISTORY'];
      } else {
         $tmp_data = $data['SONGHISTORY']['SONG'];
      }
      
      $song_history = array();
      foreach ( (array)$tmp_data as $song )
      {
         $song_history[] = array (
            "TIMESTAMP" => intval ($song['PLAYEDAT']), 
            "TITLE" => $song['TITLE']
         );
      }

$this->vars['SONG_HISTORY']       = $song_history;

 if ( $s->admin_mode() )
        {
        
            $str_history = '';
            
            foreach ( $s->get('SONG_HISTORY') as $song )
                $str_history .= '<br>' . $song['TITLE'] ;
            printf ($str_history);
        }


Por voces

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Jul 2014 06:15 pm
¿No se puede, falta información?, al parecer es simple lo que necesito.

Gracias.

Por voces

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Jul 2014 06:59 pm
Por lo que entiendo del código, el método $s->get('SONG_HISTORY') devuelve un array.
De ese array quieres eliminar el primer elemento sin importar cuál sea su índice, para ello hay que dar vuelta al array, eliminar el último, y volver el array como estaba.

Código PHP :

$canciones = $s->get('SONG_HISTORY');
$canciones = array_reverse($canciones, true); // invierte el orden del array
array_pop($canciones); // extrae el último
$canciones = array_reverse($canciones, true); // vuelve al orden original

Luego quieres mostrar el contenido del array como una lista HTML:

Código PHP :

echo "<ol>";
foreach($canciones as $cancion) {
   echo "<li>".strip_tags($cancion)."</li>";
}
echo "</ol>";

Listo.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 10 Jul 2014 01:49 am
Muchas gracias estimado, la solución final fue:

Código PHP :

$canciones = $s->get('SONG_HISTORY');
$canciones = array_reverse($canciones, true); // invierte el orden del array
array_pop($canciones); // extrae el último
$canciones = array_reverse($canciones, true); // vuelve al orden original

echo "<ul>";
foreach($canciones as $cancion) {
   echo "<li>". $cancion['TITLE']."</li>";
}
echo "</ul>";

Por voces

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Jul 2014 12:26 pm
Excelente :)

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 10 Jul 2014 03:54 pm
No sería mejor array_shift?

Código PHP :

$canciones = $s->get('SONG_HISTORY');
array_shift($canciones); // extrae el primer

echo "<ul>";
foreach($canciones as $cancion) {
   echo "<li>". $cancion['TITLE']."</li>";
}
echo "</ul>";

Por nasho

Claber

908 de clabLevel

1 tutorial

Genero:Masculino  

Web Developer

chrome
Citar            
MensajeEscrito el 11 Jul 2014 12:23 pm
nasho:
Cierto, pero array_shift() le cambia los índices al array. Y voces no especificó si quería mantenerlos o no, así que asumí que quería que los índices no se tocaran.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 11 Jul 2014 06:28 pm
en ese caso

Código PHP :

$canciones = $s->get('SONG_HISTORY');
unset($canciones[0]);

echo "<ul>";
foreach($canciones as $cancion) {
   echo "<li>". $cancion['TITLE']."</li>";
}
echo "</ul>";

Por nasho

Claber

908 de clabLevel

1 tutorial

Genero:Masculino  

Web Developer

chrome
Citar            
MensajeEscrito el 13 Jul 2014 09:55 pm
Cierto.
Pero eso asume que el array $canciones tiene índice numérico basado en cero. Cosa que voces no dice.

Por DriverOp

Claber

2510 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.