home Foro de soporte Servicio Hosting PHP
 
Ampliar array.
Haz clic para ver el perfil del usuario
Machacateclados
Machacateclados
·
#1 ·

Buenas tardes a todos!!!
Verán, tengo que ampliar un array con valores de otro array pero me falla el código.

Spoiler:

$a=0;
while($a<count($asignaturas))
{
    //si salgo del while es pq he recorrido $asignaturas entero
    //preguntamos si son distintos para hacer las modificicaciones.
    if($asignaturas[$a]['codigo_asignatura']!=$clases[$a]['codigo_asignatura'])
    {
       for($i=count($clases)-1;$i>=$a;$i--)//ruedo a la derecha 1 celda los registros
       {
         $b=$i++;
         $clases[$b]=$clases[$i];
       }
       //llenamos la posición $a con los datos de la asignatura correspondiente
       $clases[$a]['num_clases']="01";
       $clases[$a]['codigo_asignatura']=$asignaturas[$a]['codigo_asignatura'];
     }
     $a++;
}

Mi idea es que si no está la asignatura en el array $clases, ruedo todas las celdas de $clases, 1 celda a la derecha, hasta la posición donde indique $a, y luego en dicha posición añado los valores. El problema que me da es "maximum time of 30sec ejecution....".
Desde ya, muchas gracias.

Haz clic para ver el perfil del usuario
@man / @woman
@man / @woman
· ·
#2 ·

En las instrucciones:

while($a<count($asignaturas)) y for($i=count($clases)-1;$i>=$a;$i--)

el código se ejecuta más rápico haces:

$cant=count($asignaturas);

while($a<$cant){ .... } .... for($i=$cant-1;$i>=$a;$i--)

debido que en cada ciclo no tiene que estar evaluando el count()

Haz clic para ver el perfil del usuario
@man / @woman
@man / @woman
· ·
#3 ·

Anoche no me fije lo del array, ya estaba pasado de código.

En el ciclo, estás mezclando índices numéricos con nombres, aparte de definir un bucle indefinido (el bucle interno), prueba de esta forma (lo hago con índices numéricos):


$cant=count($clases);

for($i=$cant;$i>0;$i--) $clases[$a][$i]=$clases[$a][($i-1)]; // corres a la derecha

$clases[$a][0]=$asignaturas[$a][$0]; // cargas nuevo valor


Ahora, en lugar de las 3 líneas anteriores, me gusta más esta forma:

array_unshift($clases[$a],$asignaturas[$a][$0]);


Haz clic para ver el perfil del usuario
Machacateclados
Machacateclados
·
#4 ·

Muchas gracias GestionXls por tu tiempo; lo hice de otra forma,pero me kedo con el código que pusiste pq siempre viene bien; y es más, lo probaré,porque son menos líneas, y si me devuelve lo mismo... bienvenido,jaja ^_^
Muchas gracias, en serio.

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Foro de soporte · Servicio Hosting · PHP
Opciones:
Subscríbete a este tema
Date de baja de este tema
Ir al subforo:  
TU NO PUEDES Escribir nuevos temas en este foro
TU NO PUEDES Responder a los temas en este foro
TU NO PUEDES Editar tus propios mensajes en este foro
TU NO PUEDES Borrar tus propios mensajes en este foro
Ahora son las 04:00 UTC+01:00
Temas similares
No se han encontrado temas similares