我有一个数组,其整数值介于0到100之间。我希望删除小于数字X的整数,并保留等于或大于数字X的整数。
答案 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,
)