如何删除小于X的数组中的整数?

时间:2010-04-12 04:50:32

标签: php arrays integer filtering

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

2 个答案:

答案 0 :(得分:15)

使用笨重的create_function有点难看,但是直截了当:

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

对于PHP> = 5.3:

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

$y设置为您想要的任何内容。

答案 1 :(得分:0)

比生成一个太大的数组然后将其缩小到更大更聪明,我建议只从一开始就生成你想要的东西。

range()将为您完成这项工作,而无需通过匿名函数调用迭代条件。

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

潜在产出:

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

或者,如果您确实想要修改已生成的输入数组,那么假设您有一个索引数组,则可以使用array_slice()使用X删除元素以定位开始offset并可选择保留索引/键。

代码:(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

潜在产出:

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