2010-04-12 11 views

risposta

13

un po 'brutto con il goffo create_function , ma dritto in avanti:

$filtered = array_filter($array, create_function('$x', 'return $x >= $y;')); 

per PHP> = 5.3:

$filtered = array_filter($array, function ($x) { return $x >= $y; }); 

Impostare $y per quello che vuoi.

0

Più intelligente della generazione di un array troppo grande per ridurlo a misura, consiglio di generare esattamente ciò che si desidera fin dall'inizio.

range() farà questo lavoro per te senza il fastidio di una funzione anonima chiamata iterando una condizione.

Codice: (Demo)

$rand=rand(0,100); // This is your X randomly generated 

echo $rand,"\n"; 

$array=range($rand,100); // generate an array with elements from X to 100 (inclusive) 

var_export($array); 

uscita Potenziale:

98 
array (
    0 => 98, 
    1 => 99, 
    2 => 100, 
) 

In alternativa, se veramente, veramente si vuole modificare la matrice di input che è già stato generato, quindi assumendo si dispone di un array indicizzato è possibile utilizzare array_slice() per rimuovere elementi utilizzando X per indirizzare l'offset iniziale e facoltativamente conservare gli indici/ke ys.

Codice: (Demo)

$array=range(0,100); 

$rand=rand(0,100); // This is your X randomly generated 
echo $rand,"\n"; 

var_export(array_slice($array,$rand)); // reindex the output array 

echo "\n"; 

var_export(array_slice($array,$rand,NULL,true)); // preserve original indexes 

potenziale di uscita:

95 
array (
    0 => 95, 
    1 => 96, 
    2 => 97, 
    3 => 98, 
    4 => 99, 
    5 => 100, 
) 
array (
    95 => 95, 
    96 => 96, 
    97 => 97, 
    98 => 98, 
    99 => 99, 
    100 => 100, 
) 
Problemi correlati