Foros del Web » Programando para Internet » PHP »

Parar al tener el resultado numero N

Estas en el tema de Parar al tener el resultado numero N en el foro de PHP en Foros del Web. Hay alguna posibilidad que cuando la funccion busca y trae articulos... cuando llegue al articulo numero N pare el proceso y devuelva el array con ...
  #1 (permalink)  
Antiguo 01/09/2011, 05:19
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Parar al tener el resultado numero N

Hay alguna posibilidad que cuando la funccion busca y trae articulos... cuando llegue al articulo numero N pare el proceso y devuelva el array con los datos?
  #2 (permalink)  
Antiguo 01/09/2011, 05:35
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Esto es parte de la estructura de tu consulta, algo como SELECT * FROM tabla LIMIT 0, 10
  #3 (permalink)  
Antiguo 01/09/2011, 05:41
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Parar al tener el resultado numero N

pero ese es el truco, que no es una consulta mysql :)
  #4 (permalink)  
Antiguo 01/09/2011, 05:58
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Parar al tener el resultado numero N

y como tienes los articulos?
si pones ese trozo de codigo podemos ayudarte mejor
  #5 (permalink)  
Antiguo 01/09/2011, 06:22
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: Parar al tener el resultado numero N

has probado a usar exit, te mata la función, que es lo que quieres, sólo tendrías que poner un contador y cuando llegue que ejecute exit.
  #6 (permalink)  
Antiguo 01/09/2011, 06:23
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Parar al tener el resultado numero N

Los articulos los devuelvo desde una api a un array y luego le hago un json_encode, apartir de alli entra la funccion que trae articulos aleatorios y yo lo que necesito es que cuando ha traido X articulos... pare
  #7 (permalink)  
Antiguo 01/09/2011, 06:24
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Con el contador dentro del loop evaluas si es igual a 10 y le das un break
  #8 (permalink)  
Antiguo 01/09/2011, 06:45
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Parar al tener el resultado numero N

Pero es que no hay un loop.

1. Api request
2. Devuelve un json que contiene categorias y lo guardo en una variable $categorias
3. json_encode($categorias)
4. saco las categorias con un foreach en $categoria
5. por cada $categoria hago otro api request para devolver los articulos de cada $categoria

Yo necesito es que cuando devuelva los articulos, al llegar al articulo numero X pare y asi para cada $categoria que va a devolver articulos

el dolar X va a ser un numero aleatorio que siempre sumado al anterior no tiene que dar mas de 50. Es decir voy a tener aleatoriamente 5 articulos de categoria1, 2 articulos de categoria4, y el resto de la categoria5 que en total dara 50 y tendre un array con todos esos articulos.

Espero haber explicado mejor lo que quiero hacer, y espero que me podais ayudar.

Gracias
  #9 (permalink)  
Antiguo 01/09/2011, 06:49
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: Parar al tener el resultado numero N

Esto por curiosidad pero ¿para qué vuelves a cofidicar en JSON? y tienes un loop en el foreach.
  #10 (permalink)  
Antiguo 01/09/2011, 07:02
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Parar al tener el resultado numero N

Perdon, quise decir json_decode
  #11 (permalink)  
Antiguo 01/09/2011, 07:42
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Cuando obtienes los artículos de cada categoría estan en formato json? tambien le haces un loop a los artículos? Lo mejor seria que pongas parte del código para que te podamos ayudar mejor.
  #12 (permalink)  
Antiguo 01/09/2011, 08:44
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Parar al tener el resultado numero N

Por eso uso json no?
Uso solo un foreach pero no puedo hacer nada con ello.

Lo que me trae las categorias
Código PHP:

        $url 
"http://api.com/output=json&data=getCategoriesList";
        
        
$ch curl_init();

        
curl_setopt($chCURLOPT_HEADER0);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1); //Set curl to return the data instead of printing it to the browser.
        
curl_setopt($chCURLOPT_URL$url);

        
$data curl_exec($ch);

        
$categories json_decode($data);

        foreach (
$categories->categories as $category)
                {
                    
$category $category->category;
                } 
Y lo mismo para seleccionar articulos solo que le paso una variable mas, la categoria de los articulos
  #13 (permalink)  
Antiguo 01/09/2011, 08:50
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Parar al tener el resultado numero N

Tendrias que hacer algo asi:

Código PHP:
$i=0;
$n=10;
foreach (
$categories->categories as $category)
{
    if(
$i!=$n){
        
$category $category->category;
        
$i++;
    } else { 
//cuando $i==$n sale del ciclo
        
break;
    }

__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #14 (permalink)  
Antiguo 01/09/2011, 09:00
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: Parar al tener el resultado numero N

La cosa debería ser algo así:

1.- Consumir el API para las categorías
2.- Iterar las categorías devueltas
3.- Consumir el API para los artículos por categoría
4.- Iterar los artículos devueltos y darle un break cuando se hayan iterado x artículos

Saludos!
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana
  #15 (permalink)  
Antiguo 01/09/2011, 15:00
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Parar al tener el resultado numero N

Gracias a los dos, me parece genial/estupenda vuestra ayuda. Os ire informando a medida que voy avanzando con el codigo.

Gracias de nuevo
  #16 (permalink)  
Antiguo 03/09/2011, 03:28
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Parar al tener el resultado numero N

Me da algo de problemas tu solucion h2swider.

Tengo esto:

Código PHP:

$i
=0;
$articlesForCategory=5;

foreach (
$categoriesArray as $category)
            {
                if(
$i!=$articlesForCategory)
                {
                    echo 
$category." has ".$pages[$category]." pages</br>";
                    
/*$articles = TheAPI::searcharticles('cars');
                    $articles = $articles->articles;*/
                    
$i++;
                }
                else
                {
                    break;
                }
                
            } 
El problema es que se para en 5 categorias y no en 5 articulos por categoria. He intentado varias cosas pero no he logrado dar con la solucion.
  #17 (permalink)  
Antiguo 29/09/2011, 11:20
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Parar al tener el resultado numero N

Perdon por el "idle" de este topico pero he estado liado con otras cosas. He vuelto ahora al tema y sigo con el mismo problema, me puede hechar alguien una mano con ello?

Etiquetas: detener, parrar, resultados
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 15:13.