Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 洗牌数组键和值_Php_Arrays - Fatal编程技术网

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个随

我想随机洗牌一个php数组的键和值。我已经找到了洗牌顺序的解决方案,但我想洗牌键和值本身

例如,数组
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]);
    }
}