Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/01/2008, 17:19
Avatar de Sergestux
Sergestux
 
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Detener una iteracion de un foreach o una alternativa a goto

Hola colegas, me es dificil explicar las cosas, asi que espero logren entenderme:
Veran el asunto es que recorro un arreglo de platillos con la instruccion foreach, pero como mi arreglo solo contiene un valor por cada platillos y yo necesito imprimir 1 o dos veces el mismo platillo, necesito saber si hay alguna manera de decirle al foreach que no siga en la siguiente iteracion o en su defecto usar una instruccion goto que me permita ejecutar la misma iteracion. Por ahora los solucione de una fea manera poniendo el mismo codigo dos veces, una funcion seria muy tediosa ya que hay varias variables implicadas en el asunto, necesitaria pasar muchas variables y regresarlas tambien.

Para mejor ejemplo ahi les va el codigo, espero puedan ayudarme en algo:

Código PHP:
        $Platillos['1']='cocacola';
        
$Platillos['8']='hot dog';

            foreach(
$Platillos as $PlatilloId)
            {
                
/*Ventas Platillos Normales*/
                
if ($PlatilloNormal[$PlatilloId]['Cant'])
                {
                    
$UniVendidas=$PlatilloNormal[$PlatilloId]['Cant'];
                    ...
                }
                
/*Mismo Codigo*/
                
$Cadena .= "<tr class='filarpt$tipo_linea'>";    //Imprimo la descripcion dle platillo
                
$Cadena .= "<td align='center'>$UniVendidas</td>\t";        //Imprimo la cantidad de los platillos (Unidades vendidas)
                
... Muchas lineas de codigo mas (Suma de totales y esas cosas)
                ...
                ...    

                
/*Venta de platillos compuestos*/
                
if ($PlatilloCompuesto[$PlatilloId]['Cant'])    //Si es un platillo compuesto
                
{
                    
$UniVendidas=$PlatilloCompuesto[$PlatilloId]['Cant'];
                    ...
                }
                
/*Mismo Codigo*/
                
$Cadena .= "<tr class='filarpt$tipo_linea'>";    //Imprimo la descripcion dle platillo
                
$Cadena .= "<td align='center'>$UniVendidas</td>\t";        //Imprimo la cantidad de los platillos (Unidades vendidas)
                
... Muchas lineas de codigo mas (Suma de totales y esas cosas)
                ...    
//Mismo Codigo
                
...
            } 
Quisiera hacer algo como esto, pero ya me entere de que no existe la sentencia goto en php

Código PHP:
            foreach($Platillos as $PlatilloId)
            {
                
/*Ventas Platillos Normales*/
                
if ($PlatilloNormal[$PlatilloId]['Cant'])
                {
                    
$UniVendidas=$PlatilloNormal[$PlatilloId]['Cant'];
                    ...
                }
                
/*Mismo Codigo*/
                
Aqui:
                
$Cadena .= "<tr class='filarpt$tipo_linea'>";    //Imprimo la descripcion dle platillo
                
$Cadena .= "<td align='center'>$UniVendidas</td>\t";        //Imprimo la cantidad de los platillos (Unidades vendidas)
                
... Muchas lineas de codigo mas (Suma de totales y esas cosas)
                ...
                ...    

                
/*Venta de platillos compuestos*/
                
if ($PlatilloCompuesto[$PlatilloId]['Cant'] and $Bandera==false)    //Si es un platillo compuesto
                
{
                    
$UniVendidas=$PlatilloCompuesto[$PlatilloId]['Cant'];
                    ...
                    
$Bandera=true;
                    
goto Aqui:
                    
//o Tratar de detener una iteracion
                
}
            }