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
)