Foros del Web » Programando para Internet » PHP »

Consulta sobre arrays

Estas en el tema de Consulta sobre arrays en el foro de PHP en Foros del Web. Hola, tengo el siguiente array: Código PHP: Array                 (                     [ 0 ] => Array                         (                             [ 0 ] =>  Lunes                              [ 1 ] =>  Martes                          )                     [ ...
  #1 (permalink)  
Antiguo 30/05/2014, 08:32
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Consulta sobre arrays

Hola,

tengo el siguiente array:

Código PHP:

Array
                (
                    [
0] => Array
                        (
                            [
0] => Lunes
                            
[1] => Martes
                        
)

                    [
1] => Array
                        (
                            [
0] => 07:00
                            
[1] => 15:00
                            
[2] => 06:00
                            
[3] => 16:00
                        
)

                ) 
El indice 0 tiene dias y el indice 1 contiene rangos de horarios (0 y 1 es un rango, 2 y 3 es otro rango).
Ahora bien, como puedo hacer para decir q a Lunes le corresponde el rango 07:00 a 15:00 y a Martes le corresponde el rango 06:00 a 16:00?

Lo q quiero evitar es no tocar el formulario y hacerlo desde php tal cual vienen los datos.

Como podria hacer para q el array me quede de esta forma?
Código PHP:

Array
                (
                    [
0] => Array
                        (
                            [
0] => Lunes => 
                                Array (
                                        [
0] => 07:00
                                        
[1] => 15:00
                                
)

                            [
1] => Martes => 
                                Array (
                                       [
0] => 06:00
                                       
[1] => 16:00
                                
)
                        )

                ) 

Gracias
  #2 (permalink)  
Antiguo 30/05/2014, 08:44
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta sobre arrays

Podrías hacerlo asi:

Código PHP:
Ver original
  1. $horarios = [
  2.     ['lunes', 'martes'],
  3.     ['07:00', '15:00', '06:00', '16:00']
  4. ];
  5.  
  6. foreach($horarios[0] as $dia)
  7.     $horarios[$dia] = [array_shift($horarios[1]), array_shift($horarios[1])];
  8.  
  9. unset($horarios[0], $horarios[1]);
  10.  
  11. var_dump($horarios);
  #3 (permalink)  
Antiguo 30/05/2014, 08:46
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta sobre arrays

Muchas gracias. Voy a probar eso.


Agrego: lo q no dije es q pueden ser varios dias y varios rangos de horarios. Es decir, de 1 a 7 dias y un rango para cada uno
  #4 (permalink)  
Antiguo 30/05/2014, 09:06
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Consulta sobre arrays

Fabuloso con array_shift() :D
  #5 (permalink)  
Antiguo 30/05/2014, 09:09
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta sobre arrays

Puede que haya una solución "más rápida" accediento al elemento por su índice y no eliminando el elemento, seguramente cueste más memoria y más tiempo.

Me refiero a esto:
Código PHP:
Ver original
  1. foreach($horarios[0] as $num => $dia)
  2.     $horarios[$dia] = [$horarios[1][$num], $horarios[1][$num+1]];

Ten cuidado está mal la primera.

Juega un poco y llegarás, de momento se me ocurre esto, que creo valdría:
Código PHP:
Ver original
  1. $horarios[$dia] = [$horarios[1][$num ? $num + 1 : $num], $horarios[1][$num ? $num + 2 : $num + 1]];

Última edición por lolainas; 30/05/2014 a las 09:19

Etiquetas: arrays, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:47.