2 votes

PHP : Fonction de boucle pour tous les 50 éléments

Situation : J'ai 160 identifiants dans un tableau, j'ai besoin de construire des requêtes xml, dans des ensembles de 50 maximum et de soumettre chaque ensemble séparément.

Problème : Comment boucler la fonction et continuer avec l'ID 51?function doBatch($ids)

Code simplifié :

function doBatch($ids)
{
    $start = "<feed>";

    foreach($ids as $id)
    {
        $add .= '<entry>'$id.'</entry>';
    }

    $stop = "</feed>";
    $data = $start.$add.$stop;
    post($data);
}

1voto

Victor Vallim Points 1

Je ferais ça. La syntaxe devrait être correcte, mais j'ai beaucoup joué avec Python, donc il se peut que vous deviez corriger certaines parties. En tout cas, cela devrait compter le nombre d'identifiants. Faire une boucle et faire 50, tout en comptant et en enlevant 1 de la quantité totale à chaque boucle, les afficher, garder la boucle jusqu'à ce que nous soyons à court d'identifiants.

Je ne sais pas si c'est la meilleure façon de procéder, mais cela pourrait fonctionner. Et c'est simple...ish !

function doBatch($ids){
$amount = count($ids);
$start = "<feed>";

while $amount > 0
{
$count = 0;
while !($count = 50 || $amount = 0)
    {
        $count++;
        $amount--;
        $add .= '<entry>'.pop($ids).'</entry>';
    }

$stop = "</feed>";
$data = $start.$add.$stop;
post($data);
}

}

1voto

Dennis Haarbrink Points 2420

Je choisirais sans aucun doute array_splice() comme suggéré par Alin Purcaru.
Avec array_splice vous pouvez le faire :

while($chunk = array_splice($array, 0, 50)) {
    // do your stuff
}

De cette façon, vous obtenez $chunk de max. 50 articles que vous pouvez traiter facilement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X