2010-10-20 4 views
-1

Si je sais que j'ai n enregistrements, et que je veux faire quelque chose à un groupe de r enregistrements à la fois (faire des choses à n par lots parce que n est vraiment grand), est l'algorithme pour ça? Toute langue est OK (bien que j'utilise PHP).N Enregistrements effectués R à la fois Algorithme

L'algorithme doit garder à l'esprit que dans l'itération finale, il se peut qu'il n'y ait pas assez d'enregistrements pour créer un groupe complet de r.

Recall: to find the total number of r combinations from a set of n records, 
use the combination formula: 

C(n,r) = n!/r!(n-r)! 

- Edition - Dans d'autres cas sont intéressés: J'ai un fichier CSV (string) avec environ 10K lignes. Je cherchais le moyen le plus efficace de traiter chaque ligne du fichier CSV en blocs de X.

Par exemple, j'ai besoin d'envoyer des données du fichier CSV à un tiers via l'API. L'API permet uniquement d'envoyer des enregistrements X à la fois (c'est pourquoi j'ai besoin de la segmentation).

+0

ne comprends pas ce que vous voulez ... – NikiC

+0

Je ne comprends pas non plus. En fonction de votre question initiale, les combinaisons (C (n, r)) ne sont pas pertinentes. Je soupçonne que vous demandez plus que vos mots disent. – JoshD

+0

voulez-vous obtenir toutes les possibilités ('C (n, r)') ou juste des morceaux de 'r' d'un tableau de taille' n'? Si c'est le premier, je vous recommande de le repenser un peu, parce que, par exemple, 'C (100, 40)' est approximativement '1.37 * 10^28', et je doute que vous ayez le temps d'attendre pour finir. –

Répondre

2

utilisez array_chunk().

$chunks = array_chunk($arr, $r); 
foreach($chunks as $chunk) 
{ 
    deal_with($chunk); 
} 
+0

Exactement ce dont j'avais besoin! Je n'ai pas réalisé qu'il y avait array_chunk(). – doremi

Questions connexes