从关联数组中返回一个随机值的PHP函数是什么?

问题描述:

我以为是简单的为我所用array_rand试图从以下数组获得一个随机值:从关联数组中返回一个随机值的PHP函数是什么?

$array= Array ([0] => 126 [1] => 74); 
array_rand($array); 

但它返回0,有什么告诉我,这是不是在这种情况下正确的函数。

+3

如果你会看的[手册](http://php.net/manual/en/function.array-rand.php),你将不得不答案 –

+5

请*请*阅读[罚款文件](http://php.net/array_rand)。 – deceze

+1

...根据出现的可疑答案的数量来判断,然后被删除,似乎OP不是唯一没有阅读手册的人: – CD001

根据对array_rand PHP文档:

当只取出一个,array_rand()返回一个随机 对应的键。否则,返回随机条目的一组键。 这样做的目的是随机键可以从数组中挑选出来,也可以从 中随机选取。试图挑选比 数组中的元素多的元素将导致E_WARNING级别错误,并且返回NULL将返回 。

该函数返回阵列关键所以在这种情况下0将是您的数组一个有效的密钥。

我得到了更好的结果尝试不同的东西。任何未来面临这个问题的人都可以选择使用它,而不是放弃声誉得分......或者使用下面的一个解决方案作为替代方案。的PHP

$array = array(1 => 'John', 2 => 'Paul',3 => 'Sarah',4 => 'Lilly'); 
$key = array_rand($array); 
echo $value = $array[$key]; 

或者从手动的替代解决方案,除了在foreach ...

function array_random_assoc($arr, $num = 1) { 
$keys = array_keys($arr); 
shuffle($keys); 

$r = array(); 
for ($i = 0; $i < $num; $i++) { 
    $r[$keys[$i]] = $arr[$keys[$i]]; 
} 
return $r;} 

$a = array("a" => "apple", "b" => "banana", "c" => "cherry"); 
$randomnised_array= array_random_assoc($a); 

foreach($randomnised_array as $random_value){ 
echo $random_value; 
} 
+0

你可以用'array_intersect_key($ a,array_flip(array_rand($ a,$ num)))'...代替'... – deceze

+0

谢谢,但我终于解决它 – alexis

+0

你的替代解决方案是洗牌阵列 - 并保持相关的键。这不是问题。 https://stackoverflow.com/questions/4102777/php-random-shuffle-array-maintaining-key-value – Progrock

Array_rand()函数是返回阵列的随机密钥不值。我们可以使用它像下面

$array= Array ([0] => 126 [1] => 74); 
$random_key=array_rand($array); 
echo $array[$random_key];