Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Shuffle 2 php arrays in the same way

I have this for example:

$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;

How can I shuffle them both to get something like:

$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;

Or any other random order, but having the same "random factor" in both?

For example, I want that $array['one'][0] and $array['two'][0] get shuffled to get $array['one'][x] and $array['two'][x] (x being a random key, but the SAME on both arrays).

like image 744
phollz Avatar asked Feb 06 '11 05:02

phollz


1 Answers

$count = count($array['one']);
$order = range(1, $count);

shuffle($order);
array_multisort($order, $array['one'], $array['two']);
  • Works with arrays with elements of any type (objects and arrays too).
  • This way may by used with any number of arrays (not only two).
  • Works with duplicated values.
  • Clean code.
like image 106
Adam Puza Avatar answered Oct 21 '22 08:10

Adam Puza