我可以选择数组中的一些(不是全部)元素并在 PHP 中对其进行打乱吗?
我可以在 PHP 中选择数组中的一些元素并对其进行打乱吗? 你知道,当你使用 时
shuffle(array)
,它会打乱数组中的所有元素,但我只想打乱数组中的某些元素,同时保持其他元素不变,该怎么做?
Can I choose some elements in an array and shuffle it in PHP?
You know, when you use
shuffle(array)
, It shuffles all elements in an array, but I just want to shuffle some elements in an array while keep other elements unchanged, how to do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
考虑以下情况
,这是对所有数组元素进行洗牌的标准循环。为了仅对某些(“可移动”)元素进行洗牌,让我们将它们的键放入一个数组中
,并将 $a 上的循环替换为 $keys 上的循环,
这会将元素移动到位置 1、3、5 等位置,并将其他元素留在原处
Consider the following
this is the standard loop that shuffles all array elements. To shuffle only some ("movable") elements, let's put their keys into an array
and replace the loop over $a with the loop over $keys
this moves elements in positions 1, 3, 5 etc. and leaves other elements in place
您可以使用 array_slice 复制要打乱的数组部分,打乱副本,然后使用 array_splice 将打乱后的数据复制回原始数组。
编辑:更一般地说,如果您知道要洗牌的项目的键,请将它们放入名为
$keys
的数组中。然后:(抱歉,如果这有一些错误;我的 PHP 生锈了,而且我不在可以测试它的计算机附近!)
非常类似的东西适用于多维数组。
$keys
的每个元素都可以是索引数组,您可以编写$myarray[$key[0]] 而不是
。$myarray[$key]
[$key[1]]You can use
array_slice
to copy the part of the array you want to shuffle, shuffle the copy, and then usearray_splice
to copy the shuffled data back into the original array.EDIT: More generally, if you know the keys of the items you want to shuffle, put them in an array called
$keys
. Then:(Sorry if this has some mistakes; my PHP is rusty and I'm not near a computer where I can test it!)
Something very similar will work for a multidimensional array. Each element of
$keys
could be an array of indices, and instead of$myarray[$key]
you would write$myarray[$key[0]][$key[1]]
.