我有这个例子:
$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;
我怎样才能将它们都洗牌以获得类似的东西:
$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;
或任何其他随机顺序,但两者具有相同的“随机因子”?
例如,我希望将 $array['one'][0]
和 $array['two'][0]
打乱以获得 $array['one'][x]
和 $array['two'][x]
(x
是一个随 secret 钥,但 SAME在两个阵列上)。
最佳答案
$count = count($array['one']);
$order = range(1, $count);
shuffle($order);
array_multisort($order, $array['one'], $array['two']);
- 可处理包含任何类型元素的数组(对象和数组也是如此)。
- 这种方式可以用于任意数量的数组(不仅仅是两个)。
- 处理重复值。
- 整洁的代码。
关于php - 以同样的方式打乱2个php数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911770/