2010-04-12 21 views

回答

13

使用笨重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

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的元素来定位起始偏移量,并可选地保留索引/ ke YS。

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