2010-04-12 12 views

Antwort

13

Ein wenig hässlich mit den klobig create_function gleich oder größer als Zahl X. sind , aber gerade nach vorn:

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

Für PHP> = 5.3:

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

Set $y, was auch immer Sie wollen.

0

Schlauer als ein Array zu generieren, das zu groß ist und es dann auf die Größe herunterschneidet, empfehle ich, genau das zu erzeugen, was Sie von Anfang an wollen.

range() wird diesen Job für Sie ohne die Mühe eines anonymen Funktionsaufrufs ausführen, der eine Bedingung wiederholt.

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

Potential Ausgang:

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

Alternativ, wenn Sie wirklich, wirklich das Eingangs-Array ändern möchten, die Sie bereits erstellt haben, dann unter der Annahme, Sie haben ein indiziertes Array, das Sie array_slice() verwenden können, um Elemente zu entfernen, die X verwenden, um den Startversatz zu zielen, und optional die Indizes/ke beizubehalten ys.

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

Potential Ausgang:

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, 
) 
Verwandte Themen