Ciao a tutti!
Sto testando questa splendida classe con il semplice esempio in dotazione:
Come già detto in vari post qui sul forum (un grazie speciale va ad andr3a) su un pc è dura combinare più di 20 numeri con k = 3..Codice PHP:$container = Array( '3', '1', '2', '4', '5', '6', '7', '8', '9', '10', '13', '11', '12', '14', '15', '16', '17', '18', '19', '20' );
$c = &new Combinatory('-'); // note that separator('-') is optional
$matches = &$c->result( $container, 3, "Cn,k" ); // 2 is the class or combination possibility, Pn is the method
// METHODS TO CALCULATE: Pn - Pn(k) - Dn,k - D'n,k - Cn,k - C'n,k echo count( $matches );
echo '<pre>'; var_dump( $matches ); echo '</pre>';
A me interessa di più però avere un riscontro in tempo reale della lavorazione.
Ossia un semplice loading per capire a che punto sta il calcolo.
Prima di mettermi a creare barre di loading ho voluto provare ad aggiungere un puntino ( . ) stringa ad ogni passaggio fatto nel ciclo che crea le combinazioni:
Come avrete notato ho aggiunto echo".";Codice PHP:function __combinatory_C( &$container, &$match, $method ) {
eval( '$cAr = $this->'.$method.'( $container, $match );' );
$nAr = Array();
for( $a = 0, $b = count( $cAr ); $a < $b; $a++ ) {
$fAr = $this->__sort( $fAr = explode( $this->__sep, $cAr[$a] ) );
if( in_Array( $fAr, $this->__C ) == false ) {
array_push( $this->__C, $fAr );
array_push( $nAr, $cAr[$a] );
echo ".";
}
}
return $nAr;
}
Il problema è che il browser attende comunque il completamento della funzione e poi mi stampa tutto insieme (compresi i puntini).
Probabilmente il fatto di completare prima le operazioni e poi restituire tutto insieme è una logica intrinseca nel concetto di funzione php.
Avete qualche idea per far scrivere a schermo un puntino ogni combinazione durante il calcolo e non solo alla fine?
Grazie

Rispondi quotando