简体   繁体   中英

How to remove integers in array less than X?

我有一个整数值从0到100的数组。我希望删除小于数字X的整数,并保留等于或大于数字X的整数。

A little ugly using the clunky create_function , but straight forward:

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

For PHP >= 5.3:

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

Set $y to whatever you want.

Smarter than generating an array that is too big then cutting it down to size, I recommend only generating exactly what you want from the very start.

range() will do this job for you without the bother of an anonymous function call iterating a condition.

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 Output:

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

Alternatively, if you truly, truly want to modify the input array that you have already generated, then assuming you have an indexed array you can use array_slice() to remove elements using X to target the starting offset and optionally preserve the indexes/keys.

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 Output:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM