【问题标题】:randomize portion of an PHP object array随机化 PHP 对象数组的一部分
【发布时间】:2013-06-25 17:53:14
【问题描述】:

我想随机化对象数组的一部分。就像我有一个包含 10 个元素的数组,我想以随机顺序对前 5 个条目进行排序,其中其他/最后 5 个条目将完全相同。有没有简单/有效的方法来做到这一点是PHP?谢谢。

【问题讨论】:

  • 向我们展示您尝试过的精彩代码
  • 对不起,不是array_shuffle,shuffle
  • 没有一个函数。但是,您可以组合一些 PHP 数组函数。 What you have tried?

标签: php arrays sorting random


【解决方案1】:

使用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))

【讨论】:

  • 您对array_rand() 的使用不正确。你的意思是,shuffle() 或者传递第二个参数。
  • 我认为array_rand 做了shuffle 所做的事情。 PHP 函数命名很有趣。 array_rand,即使有第二个参数,也不返回值,它总是返回键。
  • 顺便array_rand也可以用。我认为你以前的版本也可以使用
  • 不,因为它返回键。您可能会找到一种使用它的方法 (array_flip?),但这很有效,我对此很满意。
  • @u_mulder, shuffle() 是合适的函数。
【解决方案2】:

您可以拆分,然后随机播放,然后合并它们。

$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);

【讨论】:

  • 请注意,shuffle 不会返回数组 - 就像 sort() 它通过引用获取变量,然后在成功时返回 true 或在失败时返回 false。
  • 不错的答案。欢迎使用 StackOverflow!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 2013-06-18
相关资源
最近更新 更多