Php 洗牌数组键和值
我想随机洗牌一个php数组的键和值。我已经找到了洗牌顺序的解决方案,但我想洗牌键和值本身 例如,数组Php 洗牌数组键和值,php,arrays,Php,Arrays,我想随机洗牌一个php数组的键和值。我已经找到了洗牌顺序的解决方案,但我想洗牌键和值本身 例如,数组array('yes'=>'oui','no'=>'non','hello'=>'bonjour')将变成array('oui'=>'yes','no'=>'non','bonjour'=>'hello')。请注意,第一个值和最后一个值随机交换了键和值 我知道可以使用array\u flip翻转数组中的键和值。但是这会翻转所有的键和值,而我想随机翻转一些键和值。我该怎么做?您可以将数组拆分为N个随
array('yes'=>'oui','no'=>'non','hello'=>'bonjour')
将变成array('oui'=>'yes','no'=>'non','bonjour'=>'hello')
。请注意,第一个值和最后一个值随机交换了键和值
我知道可以使用
array\u flip
翻转数组中的键和值。但是这会翻转所有的键和值,而我想随机翻转一些键和值。我该怎么做?您可以将数组拆分为N个随机长度的数组,然后在其中的N-X上进行数组翻转,然后合并它们并再次洗牌合并的数组?可能是,因此:
$array = array('yes' => 'oui', 'no' => 'non', 'hello' => 'bonjour');
foreach($array as $key => $value) {
if (0 === rand(0,1)) {
$array[$value] = $key;
unset($array[$key]);
}
}
$array = array('yes' => 'oui', 'no' => 'non', 'hello' => 'bonjour');
// Run it in a foreach loop
foreach ($array as $key => $val){
// rand(0, 1) will return either 0 or 1
// It's up to you which value you want to set as anchor.
if (rand(0, 1) === 0){
// Set the value as key,
// then set the key as value.
$array[$val] = $key;
// Delete the original one.
unset($array[$key]);
}
}