2013-04-10 122 views
1

我需要将此数组的大小减小到X,所以我想删除X个随机项。这里是我的PHP数组:从PHP阵列中删除随机项目

Array 
(
    [helping] => 3 
    [me] => 2 
    [stay] => 1 
    [organized!] => 1 
    [votre] => 4 
    [passion,] => 1 
    [action,] => 1 
    [et] => 2 
    [impact!] => 1 
    [being] => 4 



) 

我试过array_rand(),但它没有保留键/值。

+0

是的,我没有和它没有工作 – user2267801 2013-04-10 20:29:57

回答

3

array_rand()返回给定阵列的随机密钥(或更多),未设置的使用:

$randomKey = array_rand($array, 1); 
unset($array[$randomKey]); 
+0

没错,simplier之一。 – 2013-04-10 20:32:23

+0

如果我需要删除10个项目,该怎么办?用10代替“1”会起作用吗? – user2267801 2013-04-10 20:44:03

+0

@ user2267801:如果您想一次删除多个密钥,请参阅“Marty McVrys”答案。 (你必须循环返回的随机密钥) – erenon 2013-04-10 21:04:54

2

array_rand()返回与从原始数组键阵列。

您需要使用foreach -loop从原始数组中删除密钥。

像这样:

// Suppose you need to delete 4 items. 
$keys = array_rand($array, 4); 

// Loop through the generated keys 
foreach ($keys as $key) { 
    unset($array[$key]); 
} 
0
$foo = Array(
    "helping" => 3, 
    "me" => 2, 
    "stay" => 1, 
    "organized!" => 1, 
    "votre" => 4, 
    "passion," => 1, 
    "action," => 1, 
    "et" => 2, 
    "impact!" => 1, 
    "being" => 4 
); 

$max = 5; //number of elements you wish to remain 

for($i=0;$i<$max;$i++){ //looping through $max iterations, removing an element at random 
    $rKey = array_rand($foo, 1); 
    unset($foo[$rKey]); 
} 


die(print_r($foo)); 
0

使用此,

$array = array(); // Your array 

$max = 3; 
$keys = array_rand($array, count($array) - $max); 

// Loop through the generated keys 
foreach ($keys as $key) { 
    unset($array[$key]); 
}