2013-08-04 66 views
0

我需要用php函數* array_rand *得到一個隨機值。PHP:array_rand random值

$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); 
$rand_keys = array_rand($input, 2); 
echo $input[$rand_keys[0]] . "\n"; 
echo $input[$rand_keys[1]] . "\n"; 

如何從中獲得價值?像$input[$rand_keys];

在此先感謝。

+0

你的意思是你如何得到名字?你有沒有從上面的代碼從數組中獲得2個隨機名?像這裏http://php.net/manual/en/function.array-rand.php –

+0

聽起來像他正在尋找一種方法來獲得一堆數組值一次,給了一堆鑰匙。 – cHao

+0

給出一些關於$ input [$ rand_keys]的含義的更多細節 - 你試圖得到什麼樣的結果? – GreatBigBore

回答

0

您正確使用它。 array_rand爲您的數組的隨機條目返回一組密鑰。在你的情況,不過,如果你想挑你應該使用隨機的方式所有條目:

$rand_keys = array_rand($input, 5); 

如果你想要一個數組離開這裏,你可以只是做$rand_values = array($input[$rand_keys[0]], $input[$rand_keys[1]], $input[$rand_keys[2]], $input[$rand_keys[3]], $input[$rand_keys[4]]);

1

我還沒有看到內置的方式。我傾向於這樣做:

$rand_values = array_map(
    function($key) use ($input) { return $input[$key]; }, 
    $rand_keys 
); 

但那是因爲我徹底厭惡重複自己。 :P

1

這麼多的方式做到這一點,包括簡單的循環...這可能是最緊湊的一行代碼:

$randValues = array_intersect_key($input, array_flip(array_rand($input, 2))); 
+0

嗨,這是工作正常限制> 1 ..但它不工作,當我給極限1 ..它顯示警告爲::'array_flip()期望參數1是數組和'array_intersect_key():參數#2不是數組......'你有沒有任何解決方案.. – phpfresher

+0

如果你只需要1,那麼只要'$ input [array_rand($ input)]'。 'array_rand'的返回值對於1和> 1是非常不同的。 – deceze

+0

好的謝謝..我會做的.. – phpfresher

0

變化:

$rand_keys = array_rand($input, 2); 

$rand_keys = array_rand($input, 1);