2013-06-25 26 views
0

我想隨機化一部分對象數組。就像我有一個10個元素的數組,我想按隨機順序排序前5個條目,其他/最後5個條目將完全相同。有沒有簡單/有效的方法來做到這一點是PHP?謝謝。隨機化PHP對象數組的一部分

+0

向我們展示迷死您試圖代碼 – dbf

+0

對不起,沒有array_shuffle,'shuffle' –

+0

沒有一個單一的功能。但是,您可以組合一些PHP數組函數。 [你嘗試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

回答

5

使用array_sliceshuffle

$array = array_pad(array(), 10, ""); // 10 elements 

$first = array_slice($array, 0, 5); 
shuffle($first); // can't shuffle inline so do it like this 
$array = array_merge($first, array_slice($array, 5, 5)) 
+1

你對'array_rand()'的使用不正確。你的意思是,'shuffle()'或傳遞第二個參數。 –

+0

我以爲'array_rand'做了'shuffle'。 PHP函數的命名很有趣。 'array_rand',即使是第二個參數,也不返回值,它總是返回鍵。 – Halcyon

+0

順便說一下'array_rand'也可以使用。我認爲你以前的版本也可行 –

1

你可以拆分,然後洗一個,然後合併它們。

$myArr = ['a', 'b', 'c', 'd', 'e', 'f']; 
$randArr = array_slice($myArr, 0, 3); 
shuffle($randArr); 
$staticArr = array_slice($myArr, 3); 

$finalArr = array_merge($randArr, $staticArr); 
+0

請注意,shuffle不會返回數組 - 就像sort()它通過引用接受變量,然後在成功時返回true或在失敗時返回false。 – ChicagoRedSox

+0

很好的答案。歡迎來到StackOverflow! – RichardTowers