从现有数组中创建一个新的随机数组,而不更改原始数组

时间:2014-02-07 19:35:41

标签: php arrays

我有这个数组 -

$array = array(
    0 => "a",
    1 => "b",
    2 => "c"
);

我希望从这个阵列中获得一个新阵列:

$new_randomized_array = array(
    0 => "c",
    1 => "a",
    2 => "b"
);

使用shuffle($array)将更改我不想要的原始数组。

我可以使用:

$rand_keys = array_rand($array, 3);
foreach($rand_keys as $k => $v) {
    $new_randomized_array[] = $array[$v];
}

但这不是多余的吗? 我猜php已经有类似的功能,但我找不到它。

1 个答案:

答案 0 :(得分:0)

在PHP中,数组是值类型。因此,首先分配新数组,然后随机播放新数组。或者您可以通过函数调用(也是按值)来完成。

function shuffled_array($a) {
  shuffle($a);
  return $a;
}

$a = array(1, 2, 3);
$b = shuffled_array($a);
print_r($a);
print_r($b);