Foros del Web » Programando para Internet » PHP »

Recorrer dos array a partir de otro como base

Estas en el tema de Recorrer dos array a partir de otro como base en el foro de PHP en Foros del Web. Hola que tal??? Estoy trancada en un recorrido de arreglos, el problema es el siguiente: - Debo colocar en una gráfica las horas trabajadas para ...
  #1 (permalink)  
Antiguo 25/07/2011, 15:13
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 2
Exclamación Recorrer dos array a partir de otro como base

Hola que tal???

Estoy trancada en un recorrido de arreglos, el problema es el siguiente:

- Debo colocar en una gráfica las horas trabajadas para proyectos y actividades en un período dado (fecha inicio y fecha final).
- Lo que hice fue encapsular ese rango dado por:
$encabezado= obtenerEncabezadosPronostico($fechaInicio, $fechaFinal);

-La salida de la función lo almaceno en variables respectivamente:
$semana= $encabezado[$i][0]; // semanaActual
$anio = $encabezado[$i][1]; // añoActual

-Ahora lo que estaba haciendo era obtener de otra función, las horas para los proyectos y las actividades.
$calculo = calcularHoras($tipo_grafico, $dis_select, $ofic_select, $fechaInicio, $fechaFinal);

$calculoP = $calculo[0];
$calculoA = $calculo[1];

-Lo que hago a continuación es imprimir las horas de los proyectos y actividades por semana del mes correspondiente a dicha asignación

Código PHP:
// contiene la semana y año de todos los valores entre la fecha inicio
         // y fecha final para mostrar en la grafica los meses
         
$encabezadoobtenerEncabezadosPronostico($fechaInicio$fechaFinal);
                                
        
// imprime las horas de los proyectos y actividades
        // por semana del mes correspondiente a dicha 
       // asignación
       
for ($i 1$i <= count($encabezado); $i++){ 

               
$semana$encabezado[$i][0]; // semanaActual
               
$anio $encabezado[$i][1]; // añoActua

               
$auxMes obtenerNumMesDeSemana($semana$anio); 
                                    
              
$auxHP     $calculoP[$i]["Horas"]; // horas de Proyetos
              
$auxHA     $calculoA[$i]["Horas"]; // horas de Actividades      

             // escribo para cada iteración, el mes, las horas de proyectos y las horas de actividades
               
echo "<tr>";
               echo 
"<th>$auxMes</th>";
               echo 
"<td>$auxHP</td>";
               echo 
"<td>$auxHA</td>";
              echo 
"</tr>";

        } 
El problema, es que "explota" la variable $i, ya que el arreglo de calculoP puede ser menor que calculoA, y cuando en la BD no encuentre ningun valor, me devuelve que : Notice: Undefined offset: 22 in C:\.....obtenerGrafico.php on line xxx y es justo donde $auxHP = $calculoP[$i]["Horas"];

FECHA INICIO 07/2011 FECHA INICIO 09/2011

Mes Proyecto Actividad
07 18 8
07 22 40
08 46
09 25

He hecho la comparación dentro del

Código PHP:
if(($semana == $calculoP[$i]["Numero_Semana"]) && ($anio == $calculoP[$i]["Ano_Semana"]))
 {
      
$auxHP     $calculoP[$i]["Horas"]; 
} else{
            
$auxHP=0;
          } 
Pero no me imprime los proyectos. La cuestión es que los arreglos de proyectos y actividades son distintos y cuando los sigo con la misma variable $i, "explota". Cómo haría mejor ese recorrido para que cumpla que el numero de la semana y el año de $encabezado coincida con cada uno de los arreglos????

Disculpen si les incomoda el largo de mi pregunta!
__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking
  #2 (permalink)  
Antiguo 25/07/2011, 15:34
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 16 años, 11 meses
Puntos: 96
Respuesta: Recorrer dos array a partir de otro como base

Saludos

Se me ocurre que podrias hacer un count inicialmente sobre $calculoP y $calculoA. Algo de la siguiente manera:

Código PHP:
Ver original
  1. $contAuxHP     = count($calculoP); // Conteo horas de Proyetos
  2. $contAuxHA     = count($calculoA); // Conteohoras de Actividades
  3. for ($i = 1; $i <= count($encabezado); $i++){
  4.  
  5.                $semana= $encabezado[$i][0]; // semanaActual
  6.                $anio = $encabezado[$i][1]; // añoActua
  7.  
  8.                $auxMes = obtenerNumMesDeSemana($semana, $anio);
  9.               if($contAuxHP<=$i)                      
  10.               $auxHP     = $calculoP[$i]["Horas"]; // horas de Proyetos
  11.               if($contAuxHA<=$i)  
  12.               $auxHA     = $calculoA[$i]["Horas"]; // horas de Actividades      
  13.  
  14.              // escribo para cada iteración, el mes, las horas de proyectos y las horas de actividades
  15.                echo "<tr>";
  16.                echo "<th>$auxMes</th>";
  17.                echo "<td>$auxHP</td>";
  18.                echo "<td>$auxHA</td>";
  19.               echo "</tr>";
  20.  
  21.         }
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 26/07/2011, 07:42
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Recorrer dos array a partir de otro como base

Gracias Nano_ voy a probarlo!
__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking
  #4 (permalink)  
Antiguo 26/07/2011, 13:59
Avatar de eliza_ralves  
Fecha de Ingreso: junio-2009
Ubicación: Caracas
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Recorrer dos array a partir de otro como base

Nano_ gracias por tu aporte! era lo que necesitaba!
__________________
“El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento”— Stephen Hawking

Etiquetas: recorrer, variables
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:21.