pho*_*llz 8 php arrays random shuffle
我有这个例子:
$array['one'][0] = 0;
$array['one'][1] = 1;
$array['one'][2] = 2;
$array['one'][3] = 3;
$array['two'][0] = 00;
$array['two'][1] = 11;
$array['two'][2] = 22;
$array['two'][3] = 33;
Run Code Online (Sandbox Code Playgroud)
我怎样才能将它们混合起来以获得类似的东西:
$array['one'][0] = 2;
$array['one'][1] = 1;
$array['one'][2] = 3;
$array['one'][3] = 0;
$array['two'][0] = 22;
$array['two'][1] = 11;
$array['two'][2] = 33;
$array['two'][3] = 00;
Run Code Online (Sandbox Code Playgroud)
或者任何其他随机顺序,但两者中都有相同的"随机因素"?
例如,我想要那个$array['one'][0]并且$array['two'][0]得到洗牌以获得$array['one'][x]和$array['two'][x](x作为随机密钥,但两个阵列上的SAME).
小智 17
$count = count($array['one']);
$order = range(1, $count);
shuffle($order);
array_multisort($order, $array['one'], $array['two']);
Run Code Online (Sandbox Code Playgroud)
像这样的东西可以工作。它与 Mimikry 的答案类似,只是即使数组一中碰巧有重复的值,这个答案也会起作用(这个答案不使用数组一的值作为临时数组的键)。
假设两个数组的大小相同。
$c = count($array['one']);
$tmp = array();
for ($i=0; $i<$c; $i++) {
$tmp[$i] = array($array['one'][$i], $array['two'][$i]);
}
shuffle($tmp);
for ($i=0; $i<$c; $i++) {
$array['one'][$i] = $tmp[$i][0];
$array['two'][$i] = $tmp[$i][1];
}
Run Code Online (Sandbox Code Playgroud)