2010-04-12 9 views

Odpowiedz

13

Trochę brzydki pomocą przylegający create_function , ale prosta:

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

dla PHP> = 5.3:

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

Ustaw $y aby cokolwiek chcesz.

0

Bardziej inteligentne niż generowanie tablicy, która jest zbyt duża, a następnie zmniejszanie jej do rozmiaru, zalecam generowanie dokładnie tego, co chcesz od samego początku.

range() wykona to zadanie bez przeszkadzania anonimowej funkcji wywoływania iteracji stanu.

Kod: (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); 

potencjał wyjściowy:

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

Ewentualnie, jeśli naprawdę, naprawdę chcesz zmodyfikować tablicę wejściowych, które zostały już wygenerowane, a następnie zakładając masz tablicę indeksowaną, której możesz użyć array_slice(), aby usunąć elementy za pomocą X, aby ustawić docelowe przesunięcie i opcjonalnie zachować indeksy/ke ys.

Kod: (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 

potencjał wyjściowy:

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, 
) 
Powiązane problemy