2010-04-12 63 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, 
)