Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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,我有这样一个数组: $arr = ['red' => '#110000', 'blue' => '000011', 'brown' => '#A52A2A', 'maroon' => '#800000']; 我需要在洗牌上面做一个数组。有一个名为的php函数,用于此。但不幸的是,它删除了数组的键。这是一本书 不管怎样,我怎样才能洗牌一个数组并保留这些键呢?像这样 $keys = array_keys($arr); $values = shuffle(array_valu

我有这样一个数组:

$arr = ['red' => '#110000', 'blue' => '000011', 'brown' => '#A52A2A', 'maroon' => '#800000'];
我需要在洗牌上面做一个数组。有一个名为的php函数,用于此。但不幸的是,它删除了数组的键。这是一本书

不管怎样,我怎样才能洗牌一个数组并保留这些键呢?

像这样

$keys = array_keys($arr);
$values = shuffle(array_values($arr));
$shuffled = array_combine($keys, $values);
像这样,

$keys = array_keys($arr);
$values = shuffle(array_values($arr));
$shuffled = array_combine($keys, $values);
试试这个功能

function shuffle_assoc($array) {
    $keys = array_keys($array);

    shuffle($keys);

    foreach($keys as $key) {
        $new[$key] = $array[$key];
    }

    return $new;
}
试试这个功能

function shuffle_assoc($array) {
    $keys = array_keys($array);

    shuffle($keys);

    foreach($keys as $key) {
        $new[$key] = $array[$key];
    }

    return $new;
}

这是一个基于随机排序的解决方案,它保留了键值关联,如下所示:

<?php

$colors = ['red' => '#110000', 'blue' => '000011', 'brown' => '#A52A2A', 'maroon' => '#800000'];

function assoc_shuffle ( $arr ) {
    uasort($arr, function ($a, $b) {
        return rand(-1, 1);
    });
    return $arr;
}

print_r( assoc_shuffle( $colors ) );
<?php

function test_print($item, $key) {
    echo "$key: $item\n";
}

$arr = array();
$colors = ['red' => '#110000', 'blue' => '000011', 'brown' => '#A52A2A', 'maroon' => '#800000'];

foreach ($colors as $k => $v ) {
    $arr[] = [$k => $v];
}

shuffle( $arr );
array_walk_recursive($arr, 'test_print');

这是一个基于随机排序的解决方案,它保留了键值关联,如下所示:

<?php

$colors = ['red' => '#110000', 'blue' => '000011', 'brown' => '#A52A2A', 'maroon' => '#800000'];

function assoc_shuffle ( $arr ) {
    uasort($arr, function ($a, $b) {
        return rand(-1, 1);
    });
    return $arr;
}

print_r( assoc_shuffle( $colors ) );
<?php

function test_print($item, $key) {
    echo "$key: $item\n";
}

$arr = array();
$colors = ['red' => '#110000', 'blue' => '000011', 'brown' => '#A52A2A', 'maroon' => '#800000'];

foreach ($colors as $k => $v ) {
    $arr[] = [$k => $v];
}

shuffle( $arr );
array_walk_recursive($arr, 'test_print');
您可以使用:

以下是。

您可以使用:


这里是。

欢迎您的可能副本,解决方案来自php.net上
shuffle()
页面的第一条评论,我想OP要求保留密钥并对其余的进行shuffle?也许,如果这是他想要的,那么我们将对函数进行一些修改@nevabyte@redFIVE这是真的;)但有时,由于压力和疲劳,你无法注意到解决方案,即使它就在你面前。所以给我一点理由。@redFIVE谢谢你叫我tpp懒人
:-)
。。事实上,我在问问题之前用谷歌搜索了我的问题,因为我的英语很差,我找不到预期的答案。不客气,解决方案来自php.net上
shuffle()
页面的第一条评论,我想OP要求保留键,并洗牌其余的?也许,如果这是他想要的,那么我们将对函数进行一些修改@nevabyte@redFIVE这是真的;)但有时,由于压力和疲劳,你无法注意到解决方案,即使它就在你面前。所以给我一点理由。@redFIVE谢谢你叫我tpp懒人
:-)
。。事实上,我在问问题之前在谷歌上搜索了我的问题,由于我的英语很差,我找不到预期的答案。