Ich habe ein Array mit ganzen Zahlen von Werten von 0 bis 100. Ich wünsche ganze Zahlen zu entfernen, die weniger als die Anzahl X sind und diejenigen, die haltenWie Integer in Array weniger als X zu entfernen?
Antwort
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.
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,
)