Php 洗牌我的阵型
我洗牌时遇到问题,希望有人能指导我 我有这个数组:(这个数组是由一个随机关联函数生成的) 我正在使用这个洗牌关联函数:Php 洗牌我的阵型,php,arrays,shuffle,Php,Arrays,Shuffle,我洗牌时遇到问题,希望有人能指导我 我有这个数组:(这个数组是由一个随机关联函数生成的) 我正在使用这个洗牌关联函数: function shuffle_assoc($list) { if (!is_array($list)) return $list; $keys = array_keys($list); shuffle($keys); $random = array(); foreach ($keys as $key) { $random[] = $
function shuffle_assoc($list) {
if (!is_array($list)) return $list;
$keys = array_keys($list);
shuffle($keys);
$random = array();
foreach ($keys as $key) {
$random[] = $list[$key];
}
return $random;
}
$test = shuffle_assoc($array);
echo "<pre>";
print_r($test);
echo "</pre>";
洗牌功能不会切换[boo]
和[yeah]
有人能帮我吗?您需要跳过阵列的第一级
array (
1 =>
array (
'boo' => 'bar',
'yeah' => 'hello',
'foo' => 'world',
),
)
输出
<?php
$array = array("boo" => "hello", "yeah" => "world");
function shuffle_assoc($list) {
if (!is_array($list)) return $list;
$keys = array_keys($list);
shuffle($keys);
$random = array();
foreach ($keys as $key) {
$random[$key] = $list[$key];
}
return $random;
}
$test = shuffle_assoc($array);
print_r($test);
?>
看起来您传入的数组实际上是一个数组数组,包含1个元素。您应该在
$array[1]
上调用此方法
另外,在shuffle_assoc中,语句$random[]=$list[$key]
不保留键值,因此结果数组将只包含原始数组的值。将该代码行更改为$random[$key]=$list[$key]
应该可以修复该函数。下面是一些对我有用的代码
Array
(
[1] => Array
(
[boo] => hello
[yeah] => world
)
)
我找到了一个解决方案
$test=shuffle_assoc(数组移位($array))
array\u shift()
带来第一个元素,因此它将从
Array
(
[boo] => hello
[yeah] => world
)
到
请注意[1]现在是如何消失的@Kafuka抱歉,我正在使用PHP。这就是你要问的吗?
<?php
$array = array("boo" => "hello", "yeah" => "world");
function shuffle_assoc($list) {
if (!is_array($list)) return $list;
$keys = array_keys($list);
shuffle($keys);
$random = array();
foreach ($keys as $key) {
$random[$key] = $list[$key];
}
return $random;
}
$test = shuffle_assoc($array);
print_r($test);
?>
Array
(
[1] => Array
(
[boo] => hello
[yeah] => world
)
)
Array
(
[boo] => hello
[yeah] => world
)