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懒人:-)
。。事实上,我在问问题之前在谷歌上搜索了我的问题,由于我的英语很差,我找不到预期的答案。